【发布时间】:2012-12-17 23:06:30
【问题描述】:
谁能告诉我我做错了什么?这是我第一次使用 __toString。我收到以下错误:Catchable fatal error: Method users_class::__toString() must return a string value
这是我使用 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);
}
}
【问题讨论】:
-
修复到
protected $users_class = '';或return (string)$this->users_class; -
这意味着您为变量
$users_class设置的任何值都不是字符串。 -
users_class中应该存储什么类型的值? -
你为什么一开始就尝试实现
__toString()? -
@Glavic 在合并您的建议后解决了错误,但该功能未返回所需的结果。我认为它只是抑制错误。