Я пытаюсь понять, почему PHP documentation for variable functions утверждает, что:PHP Переменные Функции и язык конструирует
Переменные функции не будут работать с такими языковыми конструкциями, как эхо, печать, снята с охраны(), Исеть(), empty(), include, require и тому подобное. Используйте функции обертки, чтобы использовать любую из этих конструкций как переменные функции .
я попробовал некоторые из них, и они прекрасно работают:
function animal() {
return 'Monkey';
}
$animal = 'animal';
echo $animal();
возвращается Monkey
- так же, как можно было бы ожидать.
Тот же результат с print
конструкции - тогда я попробовал unset()
и он также работает абсолютно нормально:
function getIndex() {
return 0;
}
$index = 'getIndex';
$array = array(
'Monkey',
'Gorilla'
);
unset($array[$index()]);
print_r($array);
это возвращает Array ([1] => Gorilla)
.
Есть ли что-то, что мне не хватает здесь? Просто добавьте - я использую PHP 5.5.14.
что вы ожидали? –
Попробуйте '$ function = 'echo'; $ function ('Hello World'); ' –
Я думаю, что понял. Первоначально я думал, что вы не сможете использовать эти конструкции с переменной функцией, но я считаю, что они просто ссылаются на то, что вы не можете объявить переменную с 'echo' ($ echoVariable = 'echo') и называть его функцией: $ echoVariable(). –