2015-02-11 50 views
0

当我尝试运行代码的浏览器显示此错误消息:PHP类错误:类indexPageClass的对象无法转换为字符串。如何解决这类问题?

Object of class indexPageClass could not be converted to string 

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

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

这是类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; 
} 
} 

我不知道发生了什么问题。

+1

你呼应的对象。你为什么这么做? – 2015-02-11 19:10:55

+0

您的构造函数需要两个前面的下划线。 '__construct()'不是'_construct()'。尽管如此,使用构造函数并不能真正实现你所要做的,但'__invoke()'方法可以做你正在寻找的东西,请看下面的答案。 – mopsyd 2015-02-11 19:26:39

回答

0

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

如果你想打印成一个变量整个对象:print_r($res, 1);

如果你希望对象返回一个字符串:

您可以使用调用魔术方法。 在你的类添加

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

,然后在那里你引用的类:

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

添加到类下面的代码

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_(); 
    } 
} 
1

当我看到你认为一个__construct的返回值是某种形式的字符串,调用函数的结果。

但是它不是

请求new ClassName返回ClassName类的对象。 你应该明确地调用一些函数来获得一个html字符串。 或使用__toString魔法。

+0

与当前代码,他可以做'$ res = new indexPageClass(); echo $ res - > __ construct();';) – Jojo 2015-02-11 19:16:40

+0

这可以完成,但它有点令人毛骨悚然 – 2015-02-11 19:19:23

相关问题