如何正确使用Laravel中第三方软件包中的类

时间:2019-11-21 02:09:16

标签: laravel

我应该将它们包装在服务类中还是直接注入?

1)直接使用。缺点:没有合同,对我无法控制的事物有很强的依赖性。优点:简单。

dist(src, B) + dist(B, C)

2)与包装纸一起使用。缺点:更多写作。优点:合同牢固。

dist(src, B) + dist(B, C)

在这种情况下,我可以注入namespace App; use AlienPackageClass; class MyClass { protected $alien_class; public function __construct(AlienPackageClass $class){ $this->alien_class = $class; } } 而不是namespace App\Services; use AlienPackageClass; class AlienPackageClassService implements AlienPackageClassInterface { protected $alien_class; public function __construct(AlienPackageClass $class){ $this->alien_class = $class; } public function getSomething(){ } } interface AlienPackageClassInterface { public function getSomething(): bool; }

走哪条路?

1 个答案:

答案 0 :(得分:1)

'strong dependency on things I cannot control'是我的关键字。不想让我的代码无法控制的事情。

特别是,如果您认为自己可能会在将来实现AlienPackageClassInterface的另一个实例,则可能要继续第二种选择。

但是,正如他们所说,再说一遍,这些东西不必是宗教性的。哪种方案最能解决业务目标,应该是赢家。

*也跟随此线程进行其他回复。