不在对象上下文中使用$ this似乎无法修复它

时间:2014-05-22 22:02:12

标签: php

我一直收到这个错误,我检查了所有内容,但我找不到解决方案。

    public function logout($redirect = '') {
    $logout = $this->_db->delete('user_sessions', array('id', '=', $this->data()->id));
    Session::delete($this->_sessionName);
    Cookie:delete($this->_cookieName);
    Session::flash("home","Succesvol uitgelogd.");
    (isset($redirect) && isset($logout)) ? Redirect::to($redirect) :     Session::flash("home","Uitloggen mislukt."); Redirect::to("home");        
}

问题似乎发生在这里:

$logout = $this->_db->delete('user_sessions', array('id', '=', $this->data()->id));

问题在于这里的语法,它不能是我想的任何其他东西。

代码

User.class.php

全班:http://pastebin.com/v0GTnZUs

public function checkUserAgent() {               
        $_new_agent = ($_SESSION['HTTP_USER_AGENT'] != $_SERVER['HTTP_USER_AGENT']) ? false : $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);        
        $_cur_agent = md5($_SERVER['HTTP_USER_AGENT']);

        $_msg = 'Er is een fout opgetreden betreft uw login, graag opnieuw inloggen zodat we weten wie u bent.<br />Sorrie voor het ongemak.';

        return ($_cur_agent !== $_new_agent) ? User::logout() && Session::flash('msg_login',$_msg) && URL::redirect("members/login") : true;              
    }

这里是调用logout()的代码。

但是这个问题已经发生了很多次,所以我希望我能理解这个错误,节省了很多时间。

DB.class.php

全班:http://pastebin.com/wySUDF5T

PS:问题不在于调用logout()并且该部分在对象范围内或外。我得到了两件,我用的是第一部分是&#34; $ this-&gt; _db-&gt;删除&#34;第二部分是&#34; $ this-&gt; data() - &gt; id&#34;这两个部分是错误的,但我猜第二个原因是我使用了很多次&#34; $ this-&gt; _db-&gt; get&#34;当我使用这篇文章顶部的代码checkUserAgent()时,我只会遇到问题

1 个答案:

答案 0 :(得分:0)

根据您为User.class.php发布的实现,此方法被定义为静态。

public static function logout($redirect = NULL) {
    ...
}

在静态方法中,您处于类上下文,而不是实例上下文,因此没有$this