找出函数是否有任何输出与PHP

Kei*_*gan 1 php function

快点一个给你们.

假设我有一个输出字符串的函数:

function myString()
{
      echo 'Hello World';
}
Run Code Online (Sandbox Code Playgroud)

我将如何进行测试以查看该函数是否输出任何数据?

if(myString() ==''){ 
      echo ''Empty function;  
}
Run Code Online (Sandbox Code Playgroud)

mau*_*ris 8

使用输出缓冲功能:

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)