php错误:在非对象上从Array()调用成员函数


php error: Call to a member function fromArray() on a non-object

我正在尝试设置一个"忘记密码"系统。用户输入电子邮件,如果存在,则会记录一封新的电子邮件并将其发送到输入的用户电子邮件地址。用户电子邮件检查工作正常。当试图在系统中输入新密码时,它不会。

代码是这样的:

..... (form is_valid and check email ok)
if(is_object($object)) {
        $newpassword = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',8)),0,8);
        $input = $form->getValues();
        $user = Doctrine::getTable('Tcc_Model_User')
            ->find($input['email']);
        $user->fromArray($input);
        $user->Password = md5($newpassword);
        $user->save();
......
email send
} else {
    $form->getElement('email')->addError('Sorry, there is no record of that email adddress.');
  }

我得到的错误是:

Call to a member function fromArray() on a non-object

有人能帮我弄清楚我做错了什么吗?请

简单地说,$user不是一个对象。它可能是falsenull,这意味着find()实际上并没有找到它要找的东西。

您可以看到$uservar_dump($user)中的实际含义,然后您应该阅读find的文档,了解它为什么返回该值。

根据文档,Doctrine_Table::find()(在错误上方的行中调用)返回以下实体之一:

Doctrine_Collection、array、Doctrine_Record或false(如果没有结果)

这意味着您需要在尝试使用值$user之前检查返回的内容,就好像它是一个公开fromArray()方法的对象一样。