Быстрый для вас, ребята.
Скажем, у меня есть функция, которая выводит строку:
function myString() { echo 'Hello World'; }
Как мне пройти тестирование, чтобы проверить, выводит ли функция какие-либо данные?
if(myString() ==''){ echo ''Empty function; }
Использование функций выходного буфера:
function testFunctionOutput($f, $p = array()){ ob_start(); call_user_func_array($f, $p); $s = ob_get_contents(); ob_end_flush(); return (bool)($s !== ''); }
Так сказать …
function testa(){ echo 'test'; } function testb($b){ $i = 20 * $b; return $i; } var_dump(testFunctionOutput('testa')); var_dump(testFunctionOutput('testb', array(10)));
Альтернативная версия, предложенная Феликс:
function testFunctionOutput2($f, $p = array()){ ob_start(); call_user_func_array($f, $p); $l = ob_get_length(); ob_end_clean(); return (bool)($l > 0); }
Обычно, если функция возвращает данные, она будет делать это в операторе return .
как в
function myString() { $striing = 'hello'; return $string; }
Чтобы проверить это, просто вызовите функцию и посмотрите, что она возвращает.
Если вы спрашиваете, будет ли что-то написано для вывода, как указано ниже в CT … Вам нужно будет сделать что-то вроде этого:
//first turn out the output buffer so that things are written to a buffer ob_start(); //call function you want to test... output get put in buffer. mystring(); //put contents of buffer in a variable and test that variable $string = ob_get_contents(); //end output buffer ob_end() //test the string and do something... if (!empty($string)) { //or whatever you need here. echo 'outputs to output' }
Вы можете узнать намного больше по адресу http://php.net/manual/en/function.ob-start.php
Извините, я не понял этот вопрос. Выходной BUffer должен быть способом, как объяснил thephpdeveloper.
—НЕ ИМЕЕТ ЗНАЧЕНИЯ—
if(!myString()){ echo 'Empty function'; }
будет echo 'Empty Function', когда myString возвращает значение, которое может быть оценено в false IE: o, false, null, "" и т. д. …
if(myString() === NULL){ echo 'Empty function'; }
Будет напечатано только «Empty Function», когда нет возвращаемого значения.