先进的容器配置
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
先进的容器配置
服务作为公共/私有
在定义服务时,您通常会希望能够访问这些定义在你的应用程序代码。这些服务被称为公共
。例如,学说
服务注册的容器在使用DoctrineBundle是公共服务可以通过访问它:
1
美元学说=美元容器- >get (“原则”);
然而,有些用例当你不想让一个服务是公开的。这是常见的定义当一个服务只是因为它可以作为参数用于另一个服务。
请注意
如果你使用一个私人服务作为参数一个以上的其他服务,这将导致两种不同的实例被用作私人服务的实例化完成内联(如。新的PrivateFooBar ()
)。
简单的说:一个服务将是私有的,当你不想直接从代码访问它。
这是一个例子:
- YAML
- XML
- PHP
1 2 3 4
服务:foo:类:例子\ Foo公众:假
1
<服务id=“foo”类=“例子\ Foo”公共=“假”/ >
1 2 3
美元定义=新定义(“例子\ Foo”);美元定义- >setPublic (假);美元容器- >setDefinition (“foo”,美元定义);
现在服务是私人的,你不能电话:
1
美元容器- >get (“foo”);
然而,如果一个服务被标记为私有的,你仍然可以别名(见下文)来访问这个服务(通过别名)。
请注意
默认服务公众。
混叠
有时你可能想使用快捷键访问一些服务。可以通过混叠,此外,你甚至可以别名非公开的服务。
- YAML
- XML
- PHP
1 2 3 4 5
服务:foo:类:例子\ Foo栏:别名:喷火
1 2 3
<服务id=“foo”类=“例子\ Foo”/ ><服务id=“酒吧”别名=“foo”/ >
1 2 3 4
美元定义=新定义(“例子\ Foo”);美元容器- >setDefinition (“foo”,美元定义);美元containerBuilder- >setAlias (“酒吧”,“foo”);
这意味着当直接使用容器,你可以访问喷火
服务要求酒吧
服务是这样的:
1
美元容器- >get (“酒吧”);/ /将返回foo服务
要求的文件
会用例之前当你需要包含另一个文件服务本身被加载。为此,您可以使用文件
指令。
- YAML
- XML
- PHP
1 2 3 4
服务:foo:类:例子\ Foo \酒吧文件:“% kernel.root_dir % / src /道路/ /文件/直接给”
1 2 3
<服务id=“foo”类=“例子\ Foo \栏”><文件>% kernel.root_dir % / src /道路/ /文件/直接给< /文件>< /服务>
1 2 3
美元定义=新定义(的例子\ Foo \酒吧);美元定义- >setFile (' % kernel.root_dir % / src /道路/ /文件/直接给的);美元容器- >setDefinition (“foo”,美元定义);
请注意,Symfony会ob娱乐下载在内部调用PHP函数require_once这意味着每个请求的文件只包含一次。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。