如何创建服务别名和标记服务为私有

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何创建服务别名和标记服务为私有

将服务标记为公共/私有

在定义服务时,您通常希望能够在应用程序代码中访问这些定义。这些服务被称为公共.例如,学说服务是一项公共服务。方法从容器中获取它get ()方法:

1
学说容器->get (“原则”);

在某些情况下,是服务只有存在是为了被注入到另一个服务中如上所示,打算直接从容器中获取。

在这些情况下,为了获得较小的性能提升,可以将服务设置为公共(即私人):

  • YAML
  • XML
  • PHP
1 2 3 4
服务:foo:类:例子\ Foo公众:

私有服务的特殊之处在于,如果它们只被注入一次,它们将从服务转换为内联实例化(例如:新的PrivateThing ()).这提高了容器的性能。

既然服务是私人的,你不得直接从容器中获取服务:

1
容器->get (“foo”);

简单地说:如果您不想从代码中直接访问服务,则可以将其标记为私有服务。

但是,如果一个服务被标记为私有,您仍然可以用别名(见下文)访问这个服务(通过别名)。

请注意

默认情况下,服务是公共的,但是将尽可能多的服务标记为私有是一个很好的实践。

混叠

有时您可能希望使用快捷方式访问某些服务。您可以通过别名来实现这一点,此外,您甚至可以别名非公共服务。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
服务:app.phpmailer:类:AppBundle \ \ PhpMailer邮件app.mailer:别名:app.phpmailer

这意味着当直接使用容器时,您可以访问app.phpmailer通过请求服务app.mailer这样的服务:

1
容器->get (“app.mailer”);//返回PhpMailer实例

提示

在YAML中,你还可以使用快捷方式来别名服务:

1 2 3
服务:#……app.mailer:“@app.phpmailer”
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。