【问题标题】:Explanation needed for laravel avoid using static accesslaravel 需要解释避免使用静态访问
【发布时间】:2016-05-24 07:05:35
【问题描述】:

我想更深入地了解如何使用静态方法。我正在为我的应用程序使用 laravel 5.2 框架。

在我的应用程序中,我主要使用静态函数,例如,我有模型类名称,如 post,方法名称是 get_post(),只有当我错过 laravel 中的 static 关键字时,它才会声明为静态,它会引发错误

class Post extends Eloquent(){

    public static function get_post(){
        return DB::table('post')->get();
    }
 }

在我的控制器中,我将调用上面的方法

Post::get_post()

如何避免将此方法称为静态方法?根据 PHPMD 1.4.0 规则

请大家解释清楚。

【问题讨论】:

    标签: laravel phpmd


    【解决方案1】:

    Laravel 的 Eloquent 是通过静态方法调用的,所以我不知道如何避免这种情况。顺便说一句,你当然可以写而不是你写的函数

    Post::all();
    

    另一种抽象的可能性是使用存储库模式,其中控制器不直接调用模型的函数,而是类似

    $activePosts = $postRepository->getActiveAndApproved();
    

    $postRepository 会在 Laravel 的 Eloquent 模型上做一些繁重的工作,例如->where('something', true) 和类似的东西 - Symfony 已经在他们的框架中包含了这个功能。

    有关详细说明,请参阅https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/

    还看到 Laravel 大量使用 Facades,这是访问服务容器中函数的一种简化方式(例如,请参阅 config/app.phphttps://laravel.com/docs/5.2/facades 了解更多信息),可能很难避免静态函数调用。

    【讨论】:

    • 将静态方法调用的使用移动到存储库不会改变外观(或静态方法)的使用,它只是将其移动到不同的位置。
    猜你喜欢
    • 2013-09-06
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    相关资源
    最近更新 更多