php报错Using $this when not in object context错误原因及解决办法
在php中出现Using $this when not in object context的原因是在静态方法中使用$this或者直接调用非静态的方法。
错误代码:
/*thinkphp 模型类*/
class StudentCharge extends Model{
public static function getCharges($id)
{
$charges = $this->where('major_id',$student->major_id)->select();
return $charges;
}
}
/*调用*/
$charges = StudentCharge::getCharges($student->id);
以上代码就会报Using $this when not in object context错误。
解决办法1:在静态方法中使用self::来代替$this->,将上面代码的第5行修改为下面内容即可。
$charges = self::where('major_id',$student->major_id)->select();
解决办法2:实例化类后再调用该方法,将上面的调用代码修改为下面方式即可。
$sc = new StudentCharge;$charges = $sc->getCharges($student->id);