на языке программирования PHP?
отмечено вДругой вопрос что завершение результата вызова функции PHP в скобках может каким-то образом преобразовать результат в полноценное выражение, так что работает следующее:
<?php
error_reporting(E_ALL | E_STRICT);
function get_array() {
return array();
}
function foo() {
// return reset(get_array());
// ^ error: "Only variables should be passed by reference"
return reset((get_array()));
// ^ OK
}
foo();
Я пытаюсь найти что-нибудь в документации, чтобыэксплицитно и однозначно объясните, что здесь происходит. В отличие от C ++, я недостаточно знаю грамматику PHP и ее обработку операторов / выражений, чтобы получить ее самостоятельно.
Есть ли что-нибудь скрытое в документации относительно этого поведения? Если нет, может кто-нибудь еще объяснить это, не прибегая к предположению?
ОбновитьЯ впервые нашелэтот ЕБНФ якобы представлял грамматику PHP, и попытался расшифровать мои сценарии самостоятельно, но в конце концов сдался.
Затем,с помощьюphc
генерировать.dot
файл двухfoo()
варианты, япроизведенный Изображения AST для обоих сценариев с помощью следующих команд:
$ yum install phc graphviz
$ phc --dump-ast-dot test1.php > test1.dot
$ dot -Tpng test1.dot > test1.png
$ phc --dump-ast-dot test2.php > test2.dot
$ dot -Tpng test2.dot > test2.png
В обоих случаях результат был абсолютно одинаковым: