在 PHP laravel 中,我们有这样的代码
$user = User::find(1);
var_dump($user->name);
我不关心如何使用 find
方法,我关心为什么 laravel 使用静态方法?静态方法的使用不应该使方法难以测试吗?
如果他们使用单例设计会更好吗?
例如
$user = User::getInstance()->find(1);
var_dump($user->name);
原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议
事实上,您的示例与 Laravel 在幕后所做的非常相似。当您执行
User::find()
时,您实际上是在请求一个新实例,即 Collection 实例或 QueryBuilder。Illuminate\Database\Eloquent\Model( 参考):
作为旁注,您还将看到在 Laravel 中使用静态方法的另一种方式,例如
Input::get()
。这些被称为 Facades。您可以在以下位置阅读有关 Larave Facades 的更多信息: http ://laravel.com/docs/facades