<?php

/*
 * Test file 1 and 2 mirror each other, with file 1 containing non-indented cross-version compatible heredoc/nowdoc syntax,
 * while the code samples in file 2 use PHP 7.3+ flexible heredoc/nowdoc syntax.
 *
 * These two files should be kept in sync!
 */

$nowdoc = <<<'EOD'
    some text
    EOD;

$heredoc = <<<END
    some $foo text
    END;

$heredoc = <<<"END"
    some {$foo[0]} text
    END;

$heredoc = <<<END
    {$foo?->bar}
    END;

$heredoc = <<<    "END"
    some ${beers::softdrink}
    END;

$heredoc = <<< END
    {${$object->getName()}} text
    END;

$heredoc = <<<"END"
    some {${getName()}}
    END;

$heredoc = <<<END
    ${substr('laruence', 0, 2)}
    END;

$heredoc = <<<"END"
    some {$foo['bar']->baz()()}
    END;

$heredoc = <<<END
    {$obj->values[3]->name} text
    END;

$heredoc = <<<"END"
    some ${$bar}
    END;

$heredoc = <<<END
    ${foo->bar} text
    END;

$heredoc = <<<"END"
    ${foo["${bar}"]} text
    END;

$heredoc = <<<END
    some ${foo["${bar[\'baz\']}"]}
    END;

$heredoc = <<<"END"
    ${foo->{${'a'}}} text
    END;

$heredoc = <<<END
    some {$foo->{$baz[1]}}
    END;

$heredoc = <<<END
    some text
    {${beers::$ale}}
    some text
    END;

$heredoc = <<<"END"
    $people->john's wife greeted $people->robert.
    END;

$heredoc = <<<END
    Let's make sure it also works with this: {$arr[foo][3]}
    END;

$heredoc = <<<END
    Testing ${foo["${bar
      ['baz']
    }"]} and more testing
    END;

$heredoc = <<<"END"
    Testing {${foo["${bar
      ['baz']
    }"]}} and more testing
    END;

$heredoc = <<<'END'
    some text
    END;

$heredoc = <<< 'END'
    some text
    some $text
    some text \ including a backslash
    END;

$heredoc = <<<EOD
    <?php
    echo 'The below line contains escape characters and should be recognized as needing heredoc';
    echo "aa\xC3\xC3	\xC3\xB8aa";
    EOD;

echo <<<EOT
    This should print a capital 'A': \x41
    EOT;

echo <<<EOT
    Here we should have a tab and 2 'A's: \t \101 \u{41}
    EOT;
