Используя PHP 7.0, рассмотрите код ниже:
<?php
namespace A {
$closure = function() {
echo __NAMESPACE__;
};
}
namespace B {
$closure = function () {
echo __NAMESPACE__;
};
}
namespace C {
$closure();
}
Для меня ожидаемый результат будет:
PHP Notice: Undefined variable: closure
Но как-то получается
B
Тогда рассмотрите этот код ниже:
<?php
namespace A {
$closure = function() {
echo __NAMESPACE__;
};
}
namespace B {
$closure = function () {
echo __NAMESPACE__;
};
}
namespace C {
\A\$closure();
}
Теперь, зная (но еще не понимая) поведение первого примера, ожидаемый для меня результат будет:
A
Но вместо этого я получаю
PHP Parse error: syntax error, unexpected '$closure' (T_VARIABLE), expecting identifier (T_STRING)
Это поведение меня полностью смущает.
Вопрос часть 1: может ли кто-нибудь объяснить мне, что не так с моими ожиданиями в первом примере?
Вопрос часть 2: как поведение согласуется с первым примером?