理解为什么echo在php类函数中不起作用

时间:2012-12-24 21:12:04

标签: php class function scope

我正在尝试调试一个类,并使用print_r和echo在脚本进行时查看变量。

然而由于某些原因,我似乎无法从函数中获得任何输出,我已将该函数声明为public但无法使用print,echo或print_r获取任何输出。

我在这里误解了一些基本的东西 - 任何人都可以帮忙。

这是我的代码中的一些摘录:

此调用来自类中的公共函数:

$xml_data = $this->convert_to_xml($rs);

方法如下:

public function convert_to_xml($rs) {
    echo "test variable:";
    print_r($rs);
}

print_r纯粹是为了测试传递的值,但我根本没有得到任何输出

4 个答案:

答案 0 :(得分:2)

如果要返回值以将其分配给$xml_data,则必须实际返回它而不是回显它。 echo将值直接发送到输出流,而return返回函数中的值,以便可以将其赋值给变量或在其他表达式中使用:

public function convert_to_xml($rs) {
     return "test variable:";
}

答案 1 :(得分:1)

如果您期望echo / print_r输出到php的stdout流(以便您在Web浏览器中看到它),但由于某种原因您实际上没有看到它,那么很可能您有输出缓冲上。

public function convert_to_xml($rs) {
    while (ob_get_level()) 
        ob_end_flush();
     echo "test variable:";
print_r($rs);
}

您现在应该看到输出。

答案 2 :(得分:0)

尝试这样的事情(添加一些if else语句):

public function convert_to_xml($rs = NULL /* this is by default */ ) {
     if(isset($rs) && !empty($rs)){
        var_dump($rs);
     } else {
        echo 'Variable not passed or empty';
     }
}

答案 3 :(得分:0)

感谢您的投入。我已经完成并设法按预期获得print_r输出 - 该部分是一个简单的语法错误...

我认为缺少的另一部分是变量的输出,它是一个xml字符串。这没有显示在页面上,我认为是空白的,但是当我查看渲染页面的源代码时它就在那里

由于