Я плохо знаком для PHP
и узнавал о PHP
функции от w3schools. Это сказало, что "PHP позволяет вызову функции быть сделанным, когда имя функции находится в переменной"
Эта программа работала
<?php
$v = "var_dump";
$v('foo');
?>
Но эта программа не работала:
<?php
$v = "echo";
$v('foo');
?>
Но если я делаю echo('foo');
работает.
Что я делаю неправильно?
Эта функция PHP
называется Функции переменных .
Проблема здесь в echo
, который не на самом деле функция, а языковая конструкция, и функции переменных могут только использоваться с функциями. В вашем первом примере var_dump
была функцией, и она работала нормально.
Из документа PHP для функций переменных :
Функции переменных не будут работать с языковыми конструкциями , такими как echo (), print (), unset (), isset (), empty (), include (), require () и т.п. Используйте функции оболочки, чтобы использовать любую из этих конструкций в качестве функций переменных.
Вы можете использовать функцию printf
вместо echo
как:
$e = "printf"; // printf is a function not a language construct.
$e('foo');
или можете написать функцию-оболочку для echo
как:
$e = "echo_wrapper";
$e('foo');
function echo_wrapper($input) { // wrapper function that uses echo.
echo $input;
}
Есть две возможные проблемы, и вы должны решить их обе:
echo
- это не функция, а скорее конструкция языка PHP. Вам нужно написать функцию-обертку, которая повторяет
то, что ей было передано. echo
не является функцией! Вы можете использовать printf
, который является функцией, и ее можно использовать для распечатки чего-либо.