Почему я не могу использовать переменную для хранения echo () как другие функции? - PullRequest
2 голосов
/ 06 сентября 2011

Я просто пытаюсь понять, почему я не могу сделать это:

<?php
$a = "echo";
$a("test");
?>

Он просто возвращает PHP Fatal error: Call to undefined function echo() in Command line code on line 1

Когда я могу это сделать:

<?php
$a = "explode";
var_dump($a("|","1|2|3"));
?>

и получите ожидаемый результат.

Редактировать: Нашел решение моей проблемы (как вдохновлено различными ответами ниже) Создайте анонимную функцию внутри переменной $ a следующим образом:

$a = function($a){echo $a;};

Это будет работать только в PHP 5.3 или выше.

Ответы [ 5 ]

3 голосов
/ 06 сентября 2011

Это потому, что echo - это не функция, а языковая конструкция .

Попробуйте вместо print().Это должно работать нормально.

РЕДАКТИРОВАТЬ: Как указано в комментариях, печать также является языковой конструкцией и не будет работать!Тогда единственным решением является обертывание эха или печать в пользовательской функции.

<?php
function output($str){ 
    return print $str;
}

$a = "output";
$a("Lorem Ipsum ...");
?>
2 голосов
/ 06 сентября 2011

Эхо не является функцией.Это языковая конструкция, которая напоминает функцию, но не возвращает никаких значений.Из-за этого его нельзя использовать в переменных функциях ($foo = 'echo'; $foo ('hello world'); не работает)

Вам придется использовать другой метод вывода из echo (например, print), чтобы делать то, что вы хотите.

1 голос
/ 06 сентября 2011

Возможно, потому что explode - это функция, а echo - языковая конструкция. Обратите внимание, что при использовании echo скобки отсутствуют.

0 голосов
/ 06 сентября 2011

смотреть документы

echo () на самом деле не функция (это языковая конструкция), поэтому вы не требуется использовать скобки с ним. echo () (в отличие от некоторых других языковые конструкции) не ведет себя как функция, поэтому не может всегда использоваться в контексте функции. Кроме того, если вы хотите чтобы передать более одного параметра в echo (), параметры не должны быть в скобках.

0 голосов
/ 06 сентября 2011

Поскольку echo - это не функция, это встроенная часть PHP.Смотрите здесь: http://www.php.net/manual/en/functions.variable-functions.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...