php – __toString()必须返回一个字符串值
发布时间:2020-12-13 14:10:40 所属栏目:PHP教程 来源:网络整理
导读:有人能告诉我我做错了什么吗?这是我第一次使用__toString.我收到以下错误:可捕获的致命错误:方法users_class :: __ toString()必须返回一个字符串值 这是我使用Smarty调用对象: {assign var='udatas' value="$userObj-fetchUser(array('id'=$ststres[sts
有人能告诉我我做错了什么吗?这是我第一次使用__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值周围的双引号. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |