получить ответ от эха - PullRequest
       41

получить ответ от эха

5 голосов
/ 23 сентября 2011

Я работаю с некоторыми функциями, которые выводят echo.Но мне нужны их return, чтобы я мог использовать их в PHP.

Это работает (вроде бы без заминки), но мне интересно, есть ли лучший способ?

    function getEcho( $function ) {
        $getEcho = '';
        ob_start();
        $function;
        $getEcho = ob_get_clean();
        return $getEcho;
    }

Пример:

    //some echo function
    function myEcho() {
        echo '1';
    }

    //use getEcho to store echo as variable
    $myvar = getEcho(myEcho());      // '1'

Ответы [ 4 ]

10 голосов
/ 23 сентября 2011

нет, единственный способ «поймать» эхо-операторы - использовать буферизацию вывода, как вы уже это делаете. я использую очень похожую функцию в моем коде:

function return_echo($func) {
    ob_start();
    $func;
    return ob_get_clean();
}

это всего на 2 строки короче и делает то же самое.

6 голосов
/ 23 сентября 2011

Ваш первый код правильный.Можно сократить, хотя.

  function getEcho($function) {
        ob_start();
        $function;
        return ob_get_clean();
    }
    echo getEcho($function);
2 голосов
/ 23 сентября 2011

Ваш первый кусок кода - единственный способ.

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

Вы написали эти функции?Вы можете пойти тремя путями:

  1. Использование вашей обертки для захвата с помощью буферизации вывода.
  2. Дополнительный набор вызовов функций, стиль wordpress, так что somefunc () выполняет прямой вывод, а get_somefunc () возвращает вывод
  3. Добавьте дополнительный параметр к функциям всигнал, если они должны вывести или вернуть, очень похоже на print_r()'s флаг.
...