Я использую PHP 7.2.2
Ниже приведено заявление из PHP Manual:
Heredocs нельзя использовать для инициализации свойств класса. Начиная с PHP 5.3, это ограничение действительно только для heredocs, содержащих переменные.
Согласно моей интерпретации, значение этого утверждения теперь (в PHP 7.2.2) Heredocs можно использовать для инициализации свойств класса, но переменные (не свойства класса) нельзя использовать внутри Heredoc.
Если я неправильно интерпретирую смысл приведенного выше утверждения, пожалуйста, исправьте мою ошибку и скажите мне правильное значение.
Если моя интерпретация верна, то как работает следующий пример кода?
<?php
class foo
{
var $foo;
var $bar;
function __construct()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'MyName';
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>
Выход :
My name is "MyName". I am printing some Foo.
Now, I am printing some Bar2.
This should print a capital 'A': A
Мой вопрос заключается в том, как переменная $name доступна внутри heredoc, поскольку в руководстве говорится, что использование переменной в heredoc недопустимо?
Почему PHP не генерирует никаких ошибок/уведомлений/предупреждений?