草庐IT

Autowired注入

全部标签

php - 在 Laravel 中,使用 App::make ('' ) 而不是构造函数注入(inject)有什么缺点吗?

通常我会通过构造函数注入(inject)依赖项,但是当父类具有依赖项并且必须将它们传递给所有子类时,它会变得非常冗长。另一种方法是在父类中单独使用$this->dependancy=App::make('Dependancy')。那么父子构造函数都可以为空。这样做有什么缺点吗? 最佳答案 您的方法有一个缺点,按照您的建议进行操作会使您的应用程序的可测试性降低。我的意思是,如果您尝试为父类编写单元测试,您将不再孤立地测试该父类。您的测试现在还取决于父类内部声明的依赖项的结果。如果您通过构造函数注入(inject)(或任何类型的注入(i

php - Laravel 依赖注入(inject)与继承

假设我有以下情况:config=$config;}}classClientServiceextendsService{}classProductServiceextendsService{}是否可以在我的服务提供者中为我的服务的抽象父类注册依赖注入(inject)?我有一个根据规范动态生成的API,这些类中的每一个都必须扩展抽象服务,以便它可以继承基本功能。当我实例化一个子服务时,如何在我的抽象服务中注入(inject)依赖?编辑:这个问题是专门针对抽象类注入(inject)提出的,不可能绑定(bind)自动生成的子类。 最佳答案

php - 避免 yii2 中的 sql 注入(inject)

如何在将查询参数插入表之前对其进行过滤以防止sql注入(inject)?有这样的代码:$QueryParams=Yii::$app->request->getQueryParams();$model=newAccounts();$model->attributes=$QueryParams;$connection->createCommand()->insert('accounts',$model->attributes)->execute();这种方法安全吗? 最佳答案 该方法是安全的,但还有更好的方法:$model=newAcc

php - Laravel 测试服务依赖注入(inject)错误

从结论开始,我得到了这个错误:[ErrorException]Argument1passedtoSomeValidatorTest::__construct()mustbeaninstanceofApp\Services\Validators\SomeValidator,nonegiven,calledin....vendor/phpunit/phpunit/src/Framework/TestSuite.phponline475anddefined在Laravel应用程序中,我有一个名为“SomeValidator.php”的脚本,如下所示:dependency=$someDepen

php - PHP 5.3 中的依赖注入(inject)

我正在尝试整理一个应用程序,并且已经手动执行了一段时间的构造函数依赖注入(inject)。这有点乏味,我想开始使用依赖注入(inject)容器。我正在寻找一个积极开发和维护的DI容器。我发现Crafty作为替代方案,它可以将依赖项与XML、YAML、数组或以编程方式连接在一起。DI容器不应与完整的框架紧密耦合,我们正在寻找简单且可插入的东西,尽可能减少麻烦。有没有人有建议以及您选择特定实现的原因?感谢阅读。 最佳答案 由于人们似乎喜欢我的评论,所以我将其作为答案发布。我没有这方面的经验,但我知道Symfony依赖注入(inject)

PHP文件注入(inject)?

我有一个脚本调用执行某些处理的bash脚本,但该脚本使用用户输入的数据调用bash脚本。我想知道是否有办法确保此人(这是一个文件上传)不会像;cd/;rm-rf*一样附加到文件末尾。或者其他类似的东西。正常的MYSQL注入(inject)方法会起作用吗?有更好的选择吗? 最佳答案 能够注入(inject)shell命令将是……shell命令注入(inject),而不是文件注入(inject)和SQL注入(inject)。为了防止它,使用escapeshellarg:exec('bashbash-script'.escapeshell

php - 聚合和依赖注入(inject)的区别

最近在研究依赖注入(inject)设计模式。classUser{private$db;publicfunction__construct(Database$db){$this->$db=$db;}}我不禁想知道这是否是我在聚合中学到的相同的东西。如果我错了,请纠正我。我知道目标依赖注入(inject)和聚合是不同的。有什么我想念的吗? 最佳答案 聚合是对象组合的一种形式。它与依赖注入(inject)无关。另一方面,依赖注入(inject)不是关于对象如何关联,而是如何将其他对象(依赖项)获取到特定对象中。依赖项可以是聚合、服务、存储

php - Symfony2 中依赖注入(inject)的最佳实践

在持久化一个实体之前,我需要在我的数据库的另一个表中复制和格式化一些数据。我希望此任务作为服务执行。所以我在config.yml中描述服务services:my_service:class:Acme\Bundle\AcmeBundle\DependencyInjections\MyServicearguments:entityManager:"@doctrine.orm.entity_manager"我想知道调用此服务的最佳方式。我能弄清楚的唯一方法是从Controller:$entity=newEntity($this->get('my_service'));这是最好的方法吗?

php - 如何在 Laravel 之外使用 Laravel 的 IOC 容器进行方法注入(inject)

短篇小说:我无法使用composer(https://packagist.org/packages/illuminate/container)安装的Laravel容器进行方法注入(inject)。注入(inject)仅在对象的构造函数中使用时才有效。例如:classSomeClass{function__construct(InjectedClassWorksHere$obj){}functionsomeFunction(InjectedClassFailsHere$obj){}}长话短说:我正在考虑重构一个主要项目以使用Laravel,但由于业务压力,我无法投入我想要的时间。为了不把

php - 依赖注入(inject)——传一个完整的类好还是传一个类名好?

对于依赖注入(inject),我知道我必须将一个类的实例传递给主实例而不是主类创建它自己的实例,就像这样(php):classClass_One{protected$_other;publicfunctionsetOtherClass(An_Interface$other_class){$this->_other_class=$other_class;}publicfunctiondoWhateverYouHaveToDoWithTheOtherClass(){$this->_other_class->doYourThing();}}interfaceAn_Interface{publ