如何在Laravel中正确使用第三方包中的类
我应该将它们包装在服务类中还是直接注入 1) 直接使用。缺点:没有合同,强烈依赖于我无法控制的事情。优点:简单如何在Laravel中正确使用第三方包中的类,laravel,Laravel,我应该将它们包装在服务类中还是直接注入 1) 直接使用。缺点:没有合同,强烈依赖于我无法控制的事情。优点:简单 namespace App; use AlienPackageClass; class MyClass { protected $alien_class; public function __construct(AlienPackageClass $class){ $this->alien_class = $class; } } 2) 与包装一起使
namespace App;
use AlienPackageClass;
class MyClass {
protected $alien_class;
public function __construct(AlienPackageClass $class){
$this->alien_class = $class;
}
}
2) 与包装一起使用。缺点:更多的写作。优点:强有力的合同
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;
}
在这种情况下,我可以注入AlienPackageClassInterface
,而不是AlienPackageClass
走哪条路?
“对我无法控制的事物的强烈依赖”
是我的一个关键词。我不想在我的代码中有我无法控制的东西
特别是,如果您认为可能需要实现另一个AlienPackageClassInterface
实例,那么您可能需要继续第二个选项
但是,正如他们所说,这些东西不必是宗教性的。哪种情况最能解决业务目标应该是赢家
*其他人的回答也遵循此线程