PHP: отображать сообщение с помощью функции без использования эха

Вот простая функция php.

function hello($name) {
  $message = 'Hello '.$name.' How are you feeling today?';
  return $message;
}

И, как вы знаете, когда я выполняю эту функцию, она возвращает сообщение.

<?php
  echo hello(Stackoverflow);
?>

Выход :

Hello Stackoverflow How are you feeling today?

Есть ли способ отобразить это сообщение без использования эха (по крайней мере, здесь)

например <?php hello(Stackoverflow); ?>, и он должен вернуть сообщение.


person Dhruv Kumar Jha    schedule 20.11.2010    source источник


Ответы (4)


Если это так, ваша функция должна иметь echo.

function hello($name) {
  $message = 'Hello '.$name.' How are you feeling today?';
  echo $message;
}
person Ruel    schedule 20.11.2010
comment
Роккос, ты должен изменить название. Этот ответ не соответствует названию. - person Lekensteyn; 20.11.2010
comment
@Lekensteyn, он имел в виду только не использовать echo как echo hello(Stackoverflow);. Обратите внимание на (по крайней мере, не здесь) в его вопросе. - person Ruel; 20.11.2010
comment
Дело в том, что как только вы поместите echo в функцию, вы сможете протестировать ее только путем буферизации вывода, что нежелательно. Использование echo в возвращаемом значении hello() — это чистый способ приблизиться к этому. Другими словами, функция hello OP в порядке. Кстати, если вы поместите эхо в такую ​​​​функцию, нет необходимости использовать временное, и вам также не нужно объединять строку перед выводом. Просто передайте аргументы в эхо, например. echo 'Hello ', $name, '…' - person Gordon; 20.11.2010
comment
Кроме того, ОП попросил, чтобы функция возвращала сообщение. Вероятно, он/она путает возврат и отображение, но, строго говоря, при замене return на echo или printf hello больше не возвращает $message, но NULL - person Gordon; 20.11.2010
comment
@ Руэль, я говорил о названии, а не о самом вопросе. В первый раз, когда я увидел вопрос (название), я подумал, что ОП означает «вообще не использовать эхо». - person Lekensteyn; 20.11.2010

Есть много способов показать что-то. В этом случае очень полезен printf.

<?php
function hello($name){
   printf('Hello %s How are you feeling today?', $name);
}
?>
person Lekensteyn    schedule 20.11.2010
comment
Эй, это тоже сработало, но я предпочитаю использовать эхо вместо печати. Я не хотел использовать эхо при выполнении функции. Это все. - person Dhruv Kumar Jha; 20.11.2010
comment
та же проблема, что и для помещения echo в функцию с точки зрения модульного тестирования. Лучше использовать return sprintf(… и эхо вне функции. - person Gordon; 20.11.2010

Если короткие теги включены, <?= hello('Stackoverflow') ?> должно работать. Но использовать его не рекомендуется.

person Napas    schedule 20.11.2010

Вы всегда можете распечатать его в журнале ошибок PHP: http://php.net/manual/en/function.error-log.php

person Ran Bar-Zik    schedule 20.11.2010