Как записаить результат выполнения функции в переменную

SHAKAL

Создатель
Регистрация
30 Мар 2007
Сообщения
10
Реакции
3
Здравствуйте, такой вопрос:
Предположим есть функция:

PHP:
function test() {
echo 'text';
}

К этой функции у меня доступа нет, т.е вносить в неё изменения/редактировать её (заменить echo на return) я не могу, как я могу записать результат выполнения данной функции в переменную? Т.е если бы она отдавала текст через return я бы написал так:

PHP:
function test2 () {
$out = 'bla-bla';
$out .= test();
return $out;
}


но она выводит результат сразу через echo...
Как быть?
 
PHP:
function test2 () { 
  $out = 'bla-bla'; 
  ob_start();
// ob_implicit_flush(0); только если есть проблемы или будет Gzip
    test(); 
    $out .= ob_get_contents();
  ob_end_clean();
return $out; 
}
 
можно и так :)
PHP:
function test2()
{
    $out = 'yourstring';
    ob_start(); 
    $out .= ob_get_clean();
    return $out;
}
 
Miraage
буффер остается включеным, может вызвать ошибку, при повторном обращении или если будет *flush
если будет ошибка или лишние данные концов потом ненайти.
надо делать ob_end_clean() это и очистит и выключит буфферизацию
 
Miraage
буффер остается включеным, может вызвать ошибку, при повторном обращении или если будет *flush
если будет ошибка или лишние данные концов потом ненайти.
надо делать ob_end_clean() это и очистит и выключит буфферизацию


string ob_get_clean (void)
Функция вернёт содержимое буфера и закончит буферизацию. Если буфер не активизирован, функция вернёт FALSE. Функция ob_get_clean() по существу выполняет и ob_get_contents() и ob_end_clean(). Учи матчасть :)
 
если бы на практике не столкнулся с багами) то я б не писал об этом.
по существу оно должно так делать да не всегда делает.
 
поработай с буффером, сначала, потом попробуй всеэто в Gzip, и выдать, да с Гзип нужно делать еще ob_implicit_flush(0)
или сначала с буфером, и потом в другом классе, фукнции тоже но уже используюя flush.
бажные примеры придумывать боюсь не выйдет. уже голова так не умеет
 
Назад
Сверху