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()
函数来告诉它在字符串上下文中使用什么。
添加到 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();
当我尝试 运行 代码时,浏览器显示此错误消息:
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()
函数来告诉它在字符串上下文中使用什么。
添加到 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();