Почему в PHP не работает конкатенация имен функций?
<?php
$a = 'ec';
$b = 'ho';
$c = $a.$b;
echo('Huh?');
$c('Hello, PHP!');
?>
доходность
Huh?
Fatal error: Call to undefined function echo() in <...>/php.php on line 11
Зачем?
3 ответа
Решение
echo
технически не является функцией в PHP. Это "языковая конструкция".
echo('Huh?')
альтернативный синтаксис для echo 'Huh?'
Вы можете сделать это вместо этого:
function my_echo($s) {
echo $s;
}
$a = "my_echo";
$a("Huh?");
echo - это языковая конструкция, а не функция. То, что вы пытаетесь сделать, будет работать с реальными функциями. Примерно так будет работать.
<?php
function myecho($src) { echo $src; }
$a = 'myec';
$b = 'ho';
$c = $a.$b;
$c('This is a test');
?>
echo
, print
, die
, require
, require_once
, include
, include_once
и другие (я уверен, что я пропустил некоторые) не функции, а языковые конструкции. Использование скажем echo()
в скобках есть синтаксис сахара.
Если вы хотите использовать их так, как описано выше, вам нужно обернуть их в функцию:
<?php
function echoMyEcho($str){
echo $str;
}
$c = "echoMyEcho";
$c("Let go of my eggo");