我想更深入地了解使用静态方法。我正在为我的应用程序使用laravel 5.2框架。
在我的应用程序中,我主要使用静态函数例如我有模型类名称,如post和方法名称是get_post(),并且只有当我在laravel中错过静态关键字时才会声明为静态
class Post extends Eloquent(){
public static function get_post(){
return DB::table('post')->get();
}
}
在我的控制器中,我将调用上述方法
Post::get_post()
我怎么能避免将此方法称为静态?根据 PHPMD 1.4.0规则
任何人都请清楚解释。
答案 0 :(得分:1)
Laravel的Eloquent是通过静态方法调用的,所以我不知道如何避免这种情况。顺便说一句,你可以写
,而不是你写的函数Post::all();
另一种抽象可能性是使用存储库模式,其中Controller不直接调用模型的函数,而是使用
$activePosts = $postRepository->getActiveAndApproved();
其中$postRepository
会对Laravel的Eloquent模型做一些繁重的工作。 ->where('something', true)
以及类似的事情 - Symfony在他们的框架中已经有了更强大的内容。
有关详细说明,请参阅https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/。
另见Laravel使用Facade很多,这是访问服务容器中函数的简化方法(例如,请参阅config/app.php
或https://laravel.com/docs/5.2/facades了解更多信息),可能很难避免静态函数调用。