PHP Mess Detector 避免使用静态访问

Pan*_*ira 5 controller laravel phpmd illuminate

我在 Laravel 控制器可调用类上使用 PHP Mess Detector,我收到这样的消息

Avoid using static access to class 'Illuminate\Support\Facades\Cache' in method '__invoke'
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么我必须避免在调用方法上使用静态访问?

Aks*_*ale 1

静态访问会导致对其他类的不可交换的依赖关系,并导致难以测试代码。不惜一切代价避免使用静态访问,而是通过构造函数注入依赖项。静态访问可接受的唯一情况是用于工厂方法。

参考: https: //phpmd.org/rules/cleancode.html#staticaccess