Laravel静态和非静态方法



在Laravel框架中,可以将Model的方法用作静态和非静态方法,例如,您可以从Databse获取用户,如下所示:

User::where('id', 1)->first();

也像这样:

$user = new User();
$user->where('id', 1)->first();

如何在 PHP 中做到这一点? 因为据我所知,一种方法只能是静态或非静态的,而不能同时是两者兼而有之。

这是通过魔术方法完成的,该方法__callStatic创建模型的新实例,然后在其上调用该方法。这个特定的方法,where,在模型中不存在,并且由魔术方法__call处理,该方法在 Eloquent Builder 实例上调用此方法。

PHP.net 手册 - OOP - 过载__callStatic__call

拉拉维尔 - Github - 雄辩的模型__callStatic

拉拉维尔 - Github - 雄辩的模型__call

最新更新