Using $this when not in object context错误原因及解决办法

在php中出现Using t h i s w h e n n o t i n o b j e c t c o n t e x t 使 this when not in object context的原因是在静态方法中使用 this或者直接调用非静态的方法。

错误代码1

//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行修改为下面内容即可。

c h a r g e s = s e l f : : w h e r e ( m a j o r i d , charges = self::where('major_id', student->major_id)->select();

错误代码2:

//thinkphp 模型类
class StudentCharge extends Model
{
    public function getCharges($id)
    {
        $charges = $this->where('major_id',$student->major_id)->select();
        return $charges;
    }
}

//调用
$charges = StudentCharge::getCharges($student->id);

解决办法2:实例化类后再调用该方法,将上面的调用代码修改为下面方式即可。

$sc = new StudentCharge;
$charges = $sc->getCharges($student->id);

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/89000543