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

时间:2010-04-14 16:47:11

标签: php function

快点给你们。

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

function myString()
{
      echo 'Hello World';
}

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

if(myString() ==''){ 
      echo ''Empty function;  
}

3 个答案:

答案 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'
}

您可以在http://php.net/manual/en/function.ob-start.php

找到更多信息

答案 2 :(得分:0)

对不起,我误解了这个问题。输出BUffer应该是如开发人员所解释的那样。

---不相关---

if(!myString()){ 
  echo 'Empty function';
}
当myString返回一个可以计算为false的值时,

将回显'Empty Function': o,false,null,“”等......

if(myString() === NULL){ 
  echo 'Empty function';
}

只有在没有返回值时才会打印“空函数”。