我在Symfony应用程序中有一项服务,我从控制器知道我们可以使用函数$this->get('MyService');
但是从控制器外面的脚本我应该怎么称呼它?
答案 0 :(得分: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注入和属性注入,但这不属于这个问题的范围...在symfony文档的Service Container章节中阅读有关DI的更多信息。