脚本宝典收集整理的这篇文章主要介绍了php – 我们应该在子服务和父服务中注入服务参数,还是创建一个从父服务返回它的方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
vb_LOGger: class: BlotBundle\Vblogger\VBLogger arguments: ["@vb_members_module","@vb_posts_module"] vb_forum_functions: class: BlotBundle\VBLogger\VBForumFunctions arguments: [%websITe%,%username%,%password%] vb_members_module: class: BlotBundle\VBLogger\modules\Module_members arguments: [@vb_forum_functions] vb_posts_module: class: BlotBundle\VBLogger\modules\Module_posts arguments: [@vb_forum_functions]
这是我的服务.如您所见,我在vb_forum_functions中注入%website%,%username%,%password%,我需要在vb_logger中访问它们. vb_forum_functions在vb_members_module和vb_posts_module中都被注入.然后,我在vb_logger中注入这两个
要在vb_logger中访问我的变量,我需要在vb_forum_functions中创建返回它们的方法,然后执行类似的操作
public function __construct(Module_members $module_members,Module_posts $module_posts) { $this->vbff = $module_members->getVbff(); $this->module_members = $module_members; $this->module_posts = $module_posts; }
在Module_members中创建一个方法来检索我的变量注入的vb_forum_functions.
PRotected $vbff; public function __construct(VBForumFunctions $vbff) { $this->vbff = $vbff; } public function getVbff() { return $this->vbff; }
最后,在vb_logger中我可以得到我的变量:
$this->password= $module_members->getVbff()->getpassword();
这听起来像是很多工作和奖励方法,但比直接将参数直接注入服务更有意义,特别是因为它们已经通过注入了vb_forum_functions的两个模块类注入,这些类已经注入了变量.
替代方案是
vb_logger: class: BlotBundle\VBLogger\VBLogger arguments: ["@vb_members_module","@vb_posts_module",%website%,%password%] vb_forum_functions: class: BlotBundle\VBLogger\VBForumFunctions arguments: [%website%,%password%]
但同样,变量已经在两个级别以下可用,是否值得再次注入它们?
另外,如果vb_logger不使用我的模块,那么我不是以不正当的方式注入它们吗?因为他们自己也创建了一个vb_forum_functions对象,由于没有使用它也是无用的,在我只使用一个模块的情况下.即便如此,我可以通过其中一个模块访问此对象,因此另一个不必将其注入vb_logger.
简而言之:
>如何将服务的变量(vb_forum_functions)访问到
service(vb_logger)中注入了两个其他服务(两个
模块)每个都注入了vb_forum_functions?
>如何使它只有vb_logger中使用的模块
实例化,以避免另一个也创造无意义的
vb_forum_functions对象本身.
以上是脚本宝典为你收集整理的php – 我们应该在子服务和父服务中注入服务参数,还是创建一个从父服务返回它的方法全部内容,希望文章能够帮你解决php – 我们应该在子服务和父服务中注入服务参数,还是创建一个从父服务返回它的方法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。