# PHP

To use this language, use the class "language-php".

## Comments

    // Single line comment
    /* Multi-line
    comment */
    # Shell-like comment

## Strings

    'foo \'bar\' baz'
    "foo \"bar\" baz"
    "a string # containing an hash"

## Variables

    $some_var = 5;
    $otherVar = "Some text";
    $null = null;
    $false = false;

## Functions

    $json = json_encode($my_object);
    $array1 = array("a" => "green", "red", "blue", "red");
    $array2 = array("b" => "green", "yellow", "red");
    $result = array_diff($array1, $array2);

## Constants

    define('MAXSIZE', 42);
    echo MAXSIZE;
    json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

## PHP 5.3+ support

    namespace my\name;
    $c = new \my\name\MyClass;
    $arr = [1,2,3];
    trait ezcReflectionReturnInfo {
        function getReturnType() { /*1*/ }
        function getReturnDescription() { /*2*/ }
    }
    function gen_one_to_three() {
        for ($i = 1; $i <= 3; $i++) {
            // Note that $i is preserved between yields.
            yield $i;
        }
    }

## PHP embedded in HTML

    <div class="<?php echo $a ? 'foo' : 'bar'; ?>">
    <?php if($var < 42) {
        echo "Something";
    } else {
        echo "Something else";
    } ?>
    </div>

## Known failures

There are certain edge cases where Prism will fail. There are always such cases in every regex-based syntax highlighter. However, Prism dares to be open and honest about them. If a failure is listed here, it doesn’t mean it will never be fixed. This is more of a “known bugs” list, just with a certain type of bug.

### Comment-like substrings

    "foo // bar";

### Shell-like comments containing two quotes of the same type

    # Shell-like comment "with quotes" inside
    # Shell-like comment 'with quotes' inside

### A less-than sign and a greater-than sign on the same line

    if($a < $b && $b > $c) {}