我的 Symfony 应用程序中有一项服务,我从控制器知道我们可以将它与该功能一起使用,$this->get('MyService');
但是从我的控制器外部的脚本中我应该如何调用它?
问问题
69 次
1 回答
1
您必须在捆绑的服务配置中将外部控制器类注册为服务(我将在此处假设 yml 配置)
services:
your_service_name:
class: Your/NonController/Class
arguments: ['@service_you_want_to_inject']
现在在您要使用注入服务的班级中:
// Your/NonController/Class.php
protected $myService;
// your 'service_you_want_to_inject' will be injected here automatically
public function __construct($my_service)
{
$this->myService = $my_service;
}
请记住,要发生依赖注入,您现在必须实际将此类用作服务 - 否则注入将不会自动发生。
您现在可以像往常一样在控制器中获取新创建的服务:
// 'service_you_want_to_inject' will be automatically injected in the constructor
$this->get('your_service_name');
还有setter injection和property injection,但这超出了这个问题的范围......在symfony文档的Service Container章节中阅读更多关于DI的信息。
于 2013-05-26T12:05:21.497 回答