Каков самый простой способ подавить любой выход, который может произвести функция? Скажем, у меня это:
function testFunc() { echo 'Testing'; return true; }
И я хочу вызвать testFunc () и получить его возвращаемое значение без появления «Тестирования» на странице. Предполагая, что это будет в контексте другого кода, который выводит другие вещи, есть ли хороший метод для этого? Может быть, возиться с выходным буфером?
Да, возиться с выходным буфером – это именно ответ. Просто включите его, прежде чем вы вызовете свой метод, который будет выводить (а не сама функция, но там, где вы его называете), вы можете обернуть его вокруг всего скрипта или потока сценария, но вы можете сделать его максимально «плотным», просто обертывая его вокруг вызова метода):
function foo() { echo "Flush!"; return true; } ob_start(); $a = foo(); ob_end_clean();
И никакой выход не генерируется.
Ну вот:
ob_start(); testFunc(); ob_end_clean();
«ob» означает «буферизацию вывода», посмотрите здесь страницы руководства: http://www.php.net/outcontrol
Да, вы на правильном пути, чтобы использовать функции буферизации вывода PHP, то есть ob_start и ob_end_clean (посмотрите их на php.net):
<?php function testFunc() { echo 'Testing'; return true; } ob_start(); $output = testFunc(); ob_end_clean(); echo $output; ?>
Разве это не так просто, как применить некоторые условия к вашему коду?
Я имею в виду, если переменная = тестирование, то вывод, иначе нет?
Для функций, которые имеют результат, который выводится непосредственно в браузер, например EVAL, вы можете записать результат в ob_start.