【问题标题】:What does this error shows? Object of class Hide could not be converted to string这个错误说明了什么? Hide 类的对象无法转换为字符串
【发布时间】:2011-09-08 10:46:34
【问题描述】:

我有这个代码

class  Hide {

    private $myname;
    function getmyname()
    {
        $myname = __class__;
        return $myname;
    }
}

class  damu {
    private static $name;
    public function name()

    {
    var_dump($this->name);
        if( $this->name == null ){
               $this->name = new Hide();
          }
          return $this->name;
    }
}

$run = new damu();
echo $run->name();

这给了我一个错误

可捕获的致命错误:Hide 类的对象无法转换为字符串

这是什么意思,如何解决。

【问题讨论】:

  • 错误出现在哪一行?

标签: php


【解决方案1】:

您正在尝试回显一个 Hide() 对象,PHP 不知道如何将其转换为字符串。这是由于以下几行:

        if( $this->name == null ){
           $this->name = new Hide();
      }
      return $this->name;

然后

echo $run->name();

代替echo,试试

print_r($run->name());

【讨论】:

  • 值得注意的是,当您回显一个对象时,您可以挂钩到 PHP 尝试调用的魔术函数 __toString
【解决方案2】:

您返回Hide 的实例并尝试回显它。由于您的实现没有__toString() 方法,因此没有字符串表示,您会收到该错误。试试这个:

$run = new damu();
echo $run->name()->getmyname();

或将__toString() 方法添加到Hide

【讨论】:

    【解决方案3】:

    你应该回来

    return $this->name->getmyname();
    

    或者为 Hide 类定义一个 tostring

    public function __toString() {
         return "str";   }
    

    【讨论】:

      【解决方案4】:

      您正在返回类Hide的实例

      if( $this->name == null ){
        $this->name = new Hide();
      }
      return $this->name;
      

      然后您尝试在此处回显该实例:

      echo $run->name();
      

      echo,需要一个字符串。这就是您收到错误的原因。

      【讨论】:

        【解决方案5】:

        正如 Christopher Armstrong 所说,您正在尝试将 Hide() 对象用作字符串,而 PHP 不知道如何转换它。 但是,您可以尝试使用以下代码将其转换为字符串:

        $myText = (string)$myVar;
        

        我在这里找到的:ToString() equivalent in PHP

        我还发现了一些 here 可能对你有帮助的东西。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-03
          • 2014-11-21
          • 2015-02-05
          • 2012-07-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多