隐藏的Laravel方法(5.1)

时间:2015-11-22 01:13:36

标签: laravel methods

首先,我有IDE助手,以及php storm插件。我也试过了Gist预制作。有一些类似的问题,但似乎没有人得到答案。如果我在这里没有得到任何东西,我可能会戳一些laracasts和ide帮助bug列表。

所以我跟着一些进入laracasts,并且这个人继续使用我所知道的未定义的方法。情况:

我创建了一个名为Article的雄辩模型。它扩展了

Illuminate\Database\Eloquent\Model

所以现在我有App \ Article,我可以调用任何可用的模型方法。例如:

$article = \App\Article::all();

PHPStorm很高兴。他不断提取::find()::findOrFail()

等内容

它位于docs

我只是不知道它是如何工作的,我没有看到模型中定义的方法。如果这是ide helper应该修复的,那么我不确定它是否正常工作。我可以RTFM,我很确定我按照指示去了发球台。

2 个答案:

答案 0 :(得分:0)

雅知道,我刚刚找到它。我看到了这个问题,所以我会在这里回答。

https://github.com/barryvdh/laravel-ide-helper/issues/248#issuecomment-131503475

修复了我的发现或失败。发现仍然是MIA。我很惊讶laravel并不以插件或专用IDE的形式支持他们的代码库。只有那些人在那里创建一个社区并推动世界前进,所以我不能抱怨太多。

答案 1 :(得分:0)

它的工作原理是因为Model实现了__callStatic(),它会在新实例上调度它自己:__callStatic() implementation on Model

它创建了一个有问题的模型的新实例(new static),并在实例上调度静态调用的方法。

实际上,Model::foo($bar)(new Model)->foo($bar)相同。