PHP可捕获致命错误:类的对象无法转换为字符串
我在这里完全迷路了。。。验证某些输入后,我创建了一个PHP可捕获致命错误:类的对象无法转换为字符串,php,pdo,Php,Pdo,我在这里完全迷路了。。。验证某些输入后,我创建了一个消息类的实例,并尝试将数据插入数据库: // send message $message = $this->model->build('message', true); $message->insertMessage($uid, $user->user_id, $title, $message); 插入的方法非常简单: // insert a new message public function insertMess
消息
类的实例,并尝试将数据插入数据库:
// send message
$message = $this->model->build('message', true);
$message->insertMessage($uid, $user->user_id, $title, $message);
插入的方法非常简单:
// insert a new message
public function insertMessage($to_id, $from_id, $title, $body)
{
$sql = "INSERT INTO messages (to_id, from_id, title, body, create_date) VALUES
(:to_id, :from_id, :title, :body, NOW())";
$sth = $this->db->prepare($sql);
return $sth->execute([':to_id' => $to_id, ':from_id' => $from_id, ':title' => $title, ':body' => $body]);
}
然而,在提交时,我得到了一个空白页面,Apache错误日志显示:
[Tue Jul 30 22:34:44 2013][error][client 127.0.0.1]PHP可捕获
致命错误:无法创建类framework\models\Message的对象
在中转换为字符串
/var/www/p-lug/p-lug_lib/framework/models/Message.php,第18行,
推荐人:
第18行引用了return语句,但即使我删除了return
,它也会导致相同的错误
我已经阅读了无数关于这个错误的链接,但是没有一个答案适用于我的例子在任何情况下,我都不会尝试将对象转换为字符串或输出结果,用于插入其他类的类似代码也能很好地工作。事实上,这段代码是从另一个工作示例复制粘贴的,唯一改变的是表和数据
我已经在所有被传递的变量上使用了
var\u dump()
,在$this
和$sth
上,所有内容都被检查出来。但是在execute()
上它失败了。这到底是怎么回事?所以$message包含一个对象
此对象作为第四个参数($body,仍然是同一个对象)传递给函数insertMessage
然后将存储在变量$body中的消息对象存储在散列数组中,散列数组作为要执行的参数传递
execute函数尝试将消息对象转换为字符串,但发现没有声明uuu toString函数
所以要么宣布
public function __toString() {
return $the_string;
}
或者创建另一个可以传递给执行函数的公共函数/成员。
$message
传递给$body
参数的是从模型中的build()
方法返回的对象
您只需返回在
build()
方法中生成的消息,而不是对象。类的message
有什么功能?你可以发布吗?但是即使我删除了它,返回它也会导致同样的错误。这意味着错误在上面一行。检查$this->db
是否有效。您是对的。我在\u POST
中定义了$message
,然后在创建对象时无意中重新定义了它,并将其传递给自身。我也不是第一次把这样的变量混在一起了,该死的。非常感谢。没错,这正是我想说的lol。我认为将对象引用传递给自身(或多或少)有点奇怪P