PHP Class error: Object of class indexPageClass could not be converted to string. How to solve this kind of issue?

PHP Class error: Object of class indexPageClass could not be converted to string. How to solve this kind of issue?

当我尝试 运行 代码时,浏览器显示此错误消息:

Object of class indexPageClass could not be converted to string

这是尝试创建对象的代码:

$res = new indexPageClass();
echo $res;

这是 class indexPageClass:

class indexPageClass {
public function _construct() {

              $TopBar= $this->Header_TopBar_Content_lsti_();

return $TopBar;
 } 
private function Header_TopBar_Content_lsti_() {
$str=<<<EOF
<ul>
<li>
    <i class="fa fa-globe"></i>
    <a>Languages</a>
    <ul class="lenguages">
        <li class="active">
            <a href="#">English <i class="fa fa-check"></i></a> 
        </li>
        <li><a href="#">Spanish</a></li>
    </ul>
</li>
<li class="topbar-devider"></li>                       
<li><a data-toggle="modal" data-target="#responsive">Login</a></li>  
</ul>
EOF;
return $str;  
 } 
}

我不知道出了什么问题。

您的 class 需要一个 __toString() 函数来告诉它在字符串上下文中使用什么。

http://www.tuxradar.com/practicalphp/6/14/5

添加到 class 下一个代码

public function __toString() {
  return $this->Header_TopBar_Content_lsti_();
}

这是你想要的吗?

PS 喜欢

class indexPageClass {
public function _construct() {

              $TopBar= $this->Header_TopBar_Content_lsti_();

return $TopBar;
 } 
private function Header_TopBar_Content_lsti_() {
$str=<<<EOF
<ul>
<li>
    <i class="fa fa-globe"></i>
    <a>Languages</a>
    <ul class="lenguages">
        <li class="active">
            <a href="#">English <i class="fa fa-check"></i></a> 
        </li>
        <li><a href="#">Spanish</a></li>
    </ul>
</li>
<li class="topbar-devider"></li>                       
<li><a data-toggle="modal" data-target="#responsive">Login</a></li>  
</ul>
EOF;
return $str;  
 } 

    public function __toString() {
      return $this->Header_TopBar_Content_lsti_();
    }
}

如我所见,您认为 __construct 的返回值是某种字符串,是调用函数的结果。

但是不是

调用 new ClassName returns ClassName class 对象。 您应该显式调用一些函数来获取 html 字符串。 或者使用__toString魔术方法。

如果要打印整个对象:var_dump($res);

如果要将整个对象打印到一个变量中:print_r($res, 1);

如果你想让对象return一个字符串:

您可以使用调用魔法方法。 在您的 class 中添加

function __invoke() {
    //put the stuff from your constructor in here
    return "your expected response";
}

然后你在哪里引用 class:

$res = new indexPageClass();
echo $res();