php – __toString()必须返回一个字符串值

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – __toString()必须返回一个字符串值脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
有人能告诉我我做错了什么吗?这是我第一次使用__toString.我收到以下错误:可捕获的致命错误方法users_class :: __ toString()必须返回一个字符串值

这是我使用Smarty调用对象:

{assign VAR='udatas' value="$userObj->fetchUser(array('id'=>$ststres[ststval].to_id))"}

这是对象.

class users_class {

PRotected $users_class;

public function __toString() {

    return $this->users_class;
}
  public function fetchUser(array $condITions){
            $db = Core::getInstance();

            $sql = "SELECT * From ".USERS." WHERE ";
            $i=0;
            $params = array();
            //$where = array();
            foreach ($conditions as $column => $value) {
            if (preg_match('/^[a-z-.-_]+$/',$column)) {
                if($i!=0){
                    $sql .= " AND ";
                }
            $sql .= "$column = ?";
            $params[] = $value;
            $i++;

    }
   }            
            //$sql .= implode(' AND ',$where);
            //$sql .= " order by title asc";    
            $res = $db->dbh->prepare($sql);
            $res->execute(array_values($params));
            return $res->fetch(PDO::FETCH_ASSOC);               
}   
   }
错误消息…必须返回一个字符串值…只是意味着__toString()的返回值必须是数据类型字符串的值.如果您的示例中的$users_class不是字符串值,则必须在返回之前将其转换为字符串.

但是在阅读上面的例子时,我觉得var $users_class可能还没有被初始化.在这种情况下,将方法__toString()更改为

public function __toString() {
    if(is_null($this->users_class)) {
        return 'NULL';
    }
    return $this->user_class;
}

要使上述代码正常工作,您还需要对smarty代码进行更改.删除value = attribute值周围的双引号.

脚本宝典总结

以上是脚本宝典为你收集整理的php – __toString()必须返回一个字符串值全部内容,希望文章能够帮你解决php – __toString()必须返回一个字符串值所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。