在非对象 PHP 上调用成员函数 login() 的致命错误


Fatal Error Call to a member function login() on a non-object PHP

我刚刚在PHP中开始使用OOP,我尝试制作简单的登录表单,只需签入DB。但是当我加载页面时,它只是抛出我这个主题名称中的错误。知道我该如何解决这个问题吗?

<?php
use Nette'Application'UI;
use Nette'Database'Connection;

/**
 * Homepage presenter.
 */          
class HomepagePresenter extends BasePresenter 
{
    protected function createComponentSign()
    {
        $form = new UI'Form;
        $form->addText('name', 'Jméno:');
        $form->addPassword('password', 'Heslo:', 30);
        $form->addCheckbox('persistent', 'Pamatovat si mě na tomto počítači');
        $form->addSubmit('login', 'Přihlásit se');
        $form->onSuccess[] = callback($this, 'signSubmited');
        return $form;
    }
    // volá se po úspěšném odeslání formuláře
    public function signSubmited(UI'Form $form)
    {
        try {
            $user = $form->getValues()->name;
            $values = $form->getValues();
            if ($values ->persistent)  {
                        $user->setExpiration('+30 days',FALSE);
                        }
            $user->login($values->username, $values->password);
            $this->flashMessage("Byl jsi úspěšně přihlášen jako: $values[name]");
            //this->redirect('Homepage:');
        } catch (Nette'Security'AuthenticationException $e) {
            $form->addError('Neplatné uživatelské jméno nebo heslo.');
            }
    }   
    public function actionOut()
    {
        $this->getUser()->logout();
        $this->flashMessage('Bol si odhlasený.');
        $this->redirect('in');
    }
} 

try/catch 块中有以下代码行

   $user = $form->getValues()->name;

它$user分配一个字符串值,我假设你想要以下赋值

   $user = $this->getUser();

$user是字符串值,您正在尝试使用不正确的函数调用函数。

$user必须是包含登录方法的对象。