快点一个给你们.
假设我有一个输出字符串的函数:
function myString()
{
echo 'Hello World';
}
Run Code Online (Sandbox Code Playgroud)
我将如何进行测试以查看该函数是否输出任何数据?
if(myString() ==''){
echo ''Empty function;
}
Run Code Online (Sandbox Code Playgroud)
使用输出缓冲功能:
function testFunctionOutput($f, $p = array()){
ob_start();
call_user_func_array($f, $p);
$s = ob_get_contents();
ob_end_flush();
return (bool)($s !== '');
}
Run Code Online (Sandbox Code Playgroud)
所以说......
function testa(){
echo 'test';
}
function testb($b){
$i = 20 * $b;
return $i;
}
var_dump(testFunctionOutput('testa'));
var_dump(testFunctionOutput('testb', array(10)));
Run Code Online (Sandbox Code Playgroud)
Felix建议的替代版本:
function testFunctionOutput2($f, $p = array()){
ob_start();
call_user_func_array($f, $p);
$l = ob_get_length();
ob_end_clean();
return (bool)($l > 0);
}
Run Code Online (Sandbox Code Playgroud)