PHP中$ this变量用法的解释

时间:2016-05-23 10:13:04

标签: php laravel oop

我不太明白这里的OOP。我相信$ this或this可以用于指向类的当前实例并且可以访问所有非静态成员。但接下来发生了什么:

public function store(Request $request)
{
    $this->validate()
}

此代码来自Laravel框架的控制器类。我可以访问validate()方法但问题是,它不在当前类中,即使它从基类或父类继承,我也不能通过$ this变量访问它。

后来在代码中我能够像这样使用我的模型:

$post = new Post;

为什么我调用Model Post类而不是该类的构造函数?

1 个答案:

答案 0 :(得分:5)

  

我相信$ this或this可以用来指向   该类的当前实例并且可以访问所有非静态的   成员。

这是正确的。

  

我可以访问validate()方法,但问题是,它不在   当前类,即使它是从基类继承而来的   父类,我不应该通过$ this变量访问它。

这是错误的。

validate方法来自trait(在Laravel\Lumen\Routing\ProvidesConvenienceMethods中找到)。如果控制器使用了特征,并且你扩展了控制器 - 你继承了这个“基础”类的方法。