laravel避免使用静态访问所需的说明

时间:2016-05-24 07:05:36

标签: laravel phpmd

我想更深入地了解使用静态方法。我正在为我的应用程序使用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规则

任何人都请清楚解释。

1 个答案:

答案 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.phphttps://laravel.com/docs/5.2/facades了解更多信息),可能很难避免静态函数调用。