快点给你们。
假设我有一个输出字符串的函数:
function myString()
{
echo 'Hello World';
}
我如何进行测试以查看该功能是否输出任何数据?
if(myString() ==''){
echo ''Empty function;
}
答案 0 :(得分:8)
使用输出缓冲区功能:
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)));
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);
}
答案 1 :(得分:2)
通常,如果函数返回数据,它将在 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'
}
找到更多信息
答案 2 :(得分:0)
对不起,我误解了这个问题。输出BUffer应该是如开发人员所解释的那样。
---不相关---
if(!myString()){
echo 'Empty function';
}
当myString返回一个可以计算为false的值时,将回显'Empty Function': o,false,null,“”等......
if(myString() === NULL){
echo 'Empty function';
}
只有在没有返回值时才会打印“空函数”。