如何创建服务别名和马克服务私人吗

编辑该页面

如何创建服务别名和马克服务私人吗

服务作为公共/私有

当定义一个服务,它可以公共私人。如果一个服务公共,这意味着你可以直接从容器在运行时访问它。例如,学说服务是一个公共服务:

1 2
/ /只能访问公共服务美元学说=美元容器- >get (“原则”);

但通常,服务访问使用依赖注入。在这种情况下,这些服务需要公众。

所以,除非你具体地说需要直接从容器通过访问服务$容器- > get (),最佳实践是使你的服务私人。事实上,所有的服务私人默认情况下。

您还可以控制公共选项service-by-service基础上:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/ services.yaml服务:#……应用程序服务\ \ Foo:公众:真正的

私人服务是特殊的,因为他们允许容器优化是否以及如何实例化。这增加了容器的性能。它也会给你更好的错误:如果你想引用不存在的服务,您将得到一个明确的错误当你刷新任何页面,即使有问题的代码就不会在这个页面上运行。

现在服务是私人的,你不得获取服务直接从容器:

1 2 3
使用应用程序\服务\喷火;美元容器- >get (Foo::类);

因此,一个服务可以标记为私有,如果你不想从你的代码直接访问它。然而,如果一个服务被标记为私有的,你仍然可以别名(见下文)来访问这个服务(通过别名)。

混叠

有时你可能想使用快捷键访问一些服务。可以通过混叠,此外,你甚至可以别名非公开的服务。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9
#配置/ services.yaml服务:#……邮件\ App \ PhpMailer:公众:app.mailer:别名:应用\ \ PhpMailer邮件公众:真正的

这意味着当直接使用容器,你可以访问PhpMailer服务要求app.mailer服务是这样的:

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

提示

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

1 2 3 4
#配置/ services.yaml服务:#……app.mailer:“@App \ \ PhpMailer邮件”

不以为然的服务别名

如果你决定反对使用服务别名(因为它是过时的,或者你决定不维护它了),你可以轻视它的定义:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
app.mailer:别名:“App \邮件\ PhpMailer”#这个输出以下通用弃用信息:#因为acme /包1.2:“app.mailer”服务别名是弃用。你应该停止使用它,因为它在未来将被删除弃用:包:“acme /包”版本:“1.2”#您还可以定义一个自定义的弃用消息(% alias_id %占位符可用)弃用:包:“acme /包”版本:“1.2”信息:”“% alias_id %”别名是弃用。不使用它了。

现在,每次使用此服务别名,触发一个弃用警告,建议你停止或改变使用的别名。

的消息实际上是一个消息模板替换出现的% alias_id %占位符服务别名id。你必须至少有一个发生的% alias_id %在你的模板占位符。

匿名服务

在某些情况下,您可能想要阻止一个服务被用作其他服务的依赖。这可以通过创建一个匿名服务。这些服务就像常规的服务,但他们不定义一个ID和他们创建使用它们的地方。

下面的例子展示了如何将一个匿名服务到另一个服务:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/ services.yaml服务:App \ Foo:参数:- - - - - -服务!类:App \ AnonymousBar

请注意

匿名服务做继承的定义提供了从配置中定义的默认值。所以你需要明确服务标记为autowired的或可以使用autoconfigure时做一个匿名服务如:inline_service (Foo::类)- >自动装配()- > autoconfigure ()

使用一个匿名服务作为一个工厂是这样的:

  • YAML
  • XML
  • PHP
1 2 3 4
#配置/ services.yaml服务:App \ Foo:工厂:(服务!{类:App \ FooFactory},“constructFoo”]

不以为然的服务

一旦你决定反对使用服务(因为它是过时的或者你决定不维护它了),你可以轻视它的定义:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/ services.yaml应用程序服务\ \ OldService:弃用:包:“商家名称/包名称”版本:“2.8”信息:“% service_id %”服务弃用商家名称/包名称2.8删除3.0

现在,每一次使用这项服务,弃用警告被触发,建议你停止或改变你的使用的服务。

的消息实际上是一个消息模板替换出现的% service_id %占位符服务id。你必须至少有一个发生的% service_id %在你的模板占位符。

请注意

弃用的信息是可选的。如果没有设置,Symfoob娱乐下载ny会显示这个默认的信息:弃用“% service_id %”服务。你应该停止使用它,因为它很快就会被删除。

提示

强烈建议您定义一个自定义消息因为默认一个太通用了。一个好的消息告诉当这个服务被弃用,直到当它将维护和替代的服务使用(如果有的话)。

(见服务修饰符如何装修服务),如果不修改弃用状态定义,它将继承地位的装饰的定义。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
ob娱乐下载Symfony 6.0支持通过SensioLabs