【问题标题】:understanding why echo doesnt work within a php class function理解为什么 echo 在 php 类函数中不起作用
【发布时间】:2012-12-11 03:13:05
【问题描述】:

我正在尝试调试一个类并使用 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 纯粹是为了测试正在传递的值,但我根本没有得到任何输出

【问题讨论】:

  • 调用是否真的被执行过?
  • 为什么你的函数调用要在函数之前声明?

标签: php class function scope


【解决方案1】:

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

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

谢谢

【讨论】:

  • 您好,欢迎来到 SO。您要么修改原始问题以添加第二个问题,要么在 SO 中提出另一个问题。希望有帮助
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    如果您希望 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);
    }
    

    您现在应该可以看到输出了。

    【讨论】:

      【解决方案4】:

      尝试这样的事情(添加一些 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';
           }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多