Symfony Service 详解
2016-06-22 00:00
281 查看
默认Service,$container->get('app_service.default')
传递参数,可传递服务、变量、字符串、数组,多个参数
传递参数之 call,可调用多次call
标签,相当于给服务分类(事件、模板、数据库等),可通过
$container->findTaggedServiceIds($tagName) 获取对应服务
属性 public,可以使用 $container->get('app_service.public'),不能使用 $container->get('app_service.private'),私有服务可以作为参数传递到其它服务中
属性 parent,继承父类
属性 abstract,抽象类,只能做为父类,被重新创建服务,参考 parent。
或 $container->setDefinition($newService, new DefinitionDecorator('app_service.abstract_1'))
参数、标签、其它属性基本上都是可以同时使用的
[code=language-ini]services: app_service.default: class: AppBundle\Service\DefaultService
传递参数,可传递服务、变量、字符串、数组,多个参数
[code=language-ini]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
[code=language-ini]services: app_service.call_1: class: ~ calls: - [ setContainer, ['@service_container'] ] app_service.call_2: class: ~ calls: - [ setContainer, ['@service_container'] ] - [ setRouter, ['@router'] ]
标签,相当于给服务分类(事件、模板、数据库等),可通过
$container->findTaggedServiceIds($tagName) 获取对应服务
[code=language-ini]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'),私有服务可以作为参数传递到其它服务中
[code=language-ini]services: app_service.public: class: ~ public: true app_service.private: class: ~ public: false app_service.test: arguments: [ '@app_service.private' ]
属性 parent,继承父类
[code=language-ini]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'))
[code=language-ini]services: app_service.abstract_1: class: ~ abstract: true
参数、标签、其它属性基本上都是可以同时使用的
相关文章推荐
- Symfony事件类型
- 如何在symfony中导出为CSV文件中的数据
- Symfony的安装和配置方法
- Symfony2中被遗弃的getRequest()方法分析
- Symfony2框架创建项目与模板设置实例详解
- Symfony核心类概述
- Symfony页面的基本创建实例详解
- Symfony2学习笔记之模板用法详解
- Symfony生成二维码的方法
- Symfony2学习笔记之插件格式分析
- Symfony学习十分钟入门经典教程
- Symfony数据校验方法实例分析
- Symfony实现行为和模板中取得request参数的方法
- symfony2.4的twig中date用法分析
- 使用symfony命令创建项目的方法
- Symfony模板的快捷变量用法实例
- Symfony2框架学习笔记之表单用法详解
- Symfony2学习笔记之控制器用法详解
- Symfony2学习笔记之系统路由详解
- Symfony2实现从数据库获取数据的方法小结