Почему в 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");
Другие вопросы по тегам