我不太明白这里的OOP。我相信$ this或this可以用于指向类的当前实例并且可以访问所有非静态成员。但接下来发生了什么:
public function store(Request $request)
{
$this->validate()
}
此代码来自Laravel框架的控制器类。我可以访问validate()方法但问题是,它不在当前类中,即使它从基类或父类继承,我也不能通过$ this变量访问它。
后来在代码中我能够像这样使用我的模型:
$post = new Post;
为什么我调用Model Post类而不是该类的构造函数?
答案 0 :(得分:5)
我相信$ this或this可以用来指向 该类的当前实例并且可以访问所有非静态的 成员。
这是正确的。
我可以访问validate()方法,但问题是,它不在 当前类,即使它是从基类继承而来的 父类,我不应该通过$ this变量访问它。
这是错误的。
validate
方法来自trait
(在Laravel\Lumen\Routing\ProvidesConvenienceMethods
中找到)。如果控制器使用了特征,并且你扩展了控制器 - 你继承了这个“基础”类的方法。