当我尝试运行代码时,浏览器显示以下错误消息:
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;
}
}
我不知道出了什么问题。
正如我所看到的,您认为__construct
的返回值是某种字符串,是调用函数的结果。
但不是。
对new ClassName
的调用返回ClassName
类的对象。您应该显式地调用某个函数来获取html字符串。或者使用__toString
魔术方法。
如果要打印整个对象:var_dump($res);
如果要将整个对象打印到一个变量中:print_r($res, 1);
如果您希望对象返回字符串:
您可以使用invokemagic方法。在你的课堂上添加
function __invoke() {
//put the stuff from your constructor in here
return "your expected response";
}
然后你引用类的位置:
$res = new indexPageClass();
echo $res();
您的类需要一个__toString()
函数来告诉它在字符串上下文中使用什么。
http://www.tuxradar.com/practicalphp/6/14/5
添加到类的下一个代码
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_();
}
}