Подтвердить что ты не робот

PHP: запретить вывод внутри функции?

Каков самый простой способ подавления любого выхода, который может произвести функция? Скажем, у меня есть это:

function testFunc() {
    echo 'Testing';
    return true;
}

И я хочу вызвать testFunc() и получить его возвращаемое значение без появления "Тестирования" на странице. Предполагая, что это будет в контексте другого кода, который выводит другие вещи, есть ли хороший метод для этого? Может быть, возиться с выходным буфером?

4b9b3361

Ответ 1

Да, беспорядок в Output Buffer - именно ответ. Просто включите его, прежде чем вы вызовете свой метод, который будет выводиться (а не сама функция, но там, где вы его называете), вы можете обернуть его вокруг всего потока script или script, но вы можете сделать его "плотным", насколько возможно, просто обернув его вокруг вызова метода):

function foo() {
  echo "Flush!";
  return true;
}

ob_start();
$a = foo();
ob_end_clean();

И никакой вывод не генерируется.

Ответ 2

Здесь вы идете:

ob_start();
testFunc();
ob_end_clean();

"ob" означает "буферизацию вывода", посмотрите здесь страницы руководства: http://www.php.net/outcontrol

Ответ 3

Да, вы на правильном пути, чтобы использовать функции буферизации вывода PHP, то есть ob_start и ob_end_clean (посмотрите их на php.net):

<?php
  function testFunc() {
    echo 'Testing';
    return true;
  }

    ob_start();
    $output = testFunc();
    ob_end_clean();

    echo $output;
?>

Ответ 4

Не так ли просто, как применить некоторые условия к вашему коду?

Я имею в виду, если переменная = тестирование, то вывод, иначе не?

Для функций, которые имеют результат, который выводится непосредственно в браузер, например EVAL, вы можете записать результат в ob_start.