2015-02-11 54 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

相關問題