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) {
...
}