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

Php 不在对象上下文中使用$this似乎无法修复它,php,Php,我不断地得到这个错误,我检查了一切,但我找不到解决办法 public function logout($redirect = '') { $logout = $this->_db->delete('user_sessions', array('id', '=', $this->data()->id)); Session::delete($this->_sessionName); Cookie:delete($this->_coo

我不断地得到这个错误,我检查了一切,但我找不到解决办法

    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 全班:

公共函数checkUserAgent(){
$\u new\u agent=($\u SESSION['HTTP\u USER\u agent']!=$\u SERVER['HTTP\u USER\u agent'])?false:$\u SESSION['HTTP\u USER\u agent']=md5($\u SERVER['HTTP\u USER\u agent']);
$\u cur\u agent=md5($\u SERVER['HTTP\u USER\u agent');
$\u msg=“我们在登录时会选择登录,我们在登录时会选择登录。
; return($\u cur\u agent!==$\u new\u agent)?User::logout()&&Session::flash('msg\u login',$\u msg)&&URL::redirect(“members/login”):true; }
下面是调用logout()的代码

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

DB.class.php 全班:


PS:问题不在于调用logout()的位置,而在于该部分是否在对象范围内。我用了$this->\u db->delete得到了两个部分,第一部分是“$this->\u db->delete”,第二部分是“$this->data()->id”,这两个部分都在错误线上,但我猜第二个原因是我用了很多次“$this->\u db->get”,我只是在使用本文顶部的代码checkUserAgent()时遇到了问题

基于您为该方法发布的实现,该方法被定义为静态

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

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

那么,您引用的类中没有实现该函数。那么它的实施在哪里呢?它是哪门课的一部分?如果您不发布所有相关代码,您希望我们如何提供帮助?显然,函数是在对象内容之外调用的(错误是确定的)。这与db类无关。它是在对象范围外调用的函数
logout()
,因此不存在
$this
。它只存在几秒钟,我只是把它放在那里看看是否有变化。但是很高兴知道thoSo现在的最新版本是什么?如果我们现在没有代码库,我们应该如何帮助您?
public static function logout($redirect = NULL) {
    ...
}