默认Service,$container->get('app_service.default')
services:
app_service.default:
class: AppBundle\Service\DefaultService
传递参数,可传递服务、变量、字符串、数组,多个参数
services:
app_service.argument_1:
class: ~
arguments: [ '@service_container' ]
app_service.argument_2:
class: ~
arguments: [ '%kernel.root_dir%' ]
app_service.argument_3:
class: ~
arguments: [ '我是字符串' ]
app_service.argument_4:
class: ~
arguments: [ [1,2,3] ]
app_service.argument_5:
class: ~
arguments: [ '@router', '%kernel.root_dir%' ]
传递参数之 call,可调用多次call
services:
app_service.call_1:
class: ~
calls:
- [ setContainer, ['@service_container'] ]
app_service.call_2:
class: ~
calls:
- [ setContainer, ['@service_container'] ]
- [ setRouter, ['@router'] ]
标签,相当于给服务分类(事件、模板、数据库等),可通过
$container->findTaggedServiceIds($tagName) 获取对应服务
services:
app_service.tag_1:
class: ~
tags:
- { name: 'kernel.event_subscriber' }
app_service.tag_2:
class: ~
tags:
- { name: 'kernel.kernel.event_listener', event: 'kernel.request', method: 'onKernelRequest', priority: 255 }
- { name: 'kernel.kernel.event_listener', event: 'kernel.response', method: 'onKernelResponse' }
app_service.tag_3:
class: ~
tags:
- { name: 'form.type' }
app_service.tag_4:
class: ~
tags:
- { name: 'twig.extension' }
app_service.tag_5:
class: ~
tags:
- { name: 'doctrine.event_subscriber' }
属性 public,可以使用 $container->get('app_service.public'),不能使用 $container->get('app_service.private'),私有服务可以作为参数传递到其它服务中
services:
app_service.public:
class: ~
public: true
app_service.private:
class: ~
public: false
app_service.test:
arguments: [ '@app_service.private' ]
属性 parent,继承父类
services:
app_service.parent:
class: ~
app_service.child_1:
class: ~
parent: 'app_service.parent'
属性 abstract,抽象类,只能做为父类,被重新创建服务,参考 parent。
或 $container->setDefinition($newService, new DefinitionDecorator('app_service.abstract_1'))
services:
app_service.abstract_1:
class: ~
abstract: true
参数、标签、其它属性基本上都是可以同时使用的