使用容器服务定义

编辑本页

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

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

使用容器服务定义

获取和设置服务定义

有一些使用服务定义的有用方法。

要找出是否有服务id的定义:

1
容器->hasDefinition (serviceId);

如果您只想在存在特定定义的情况下执行某些操作,那么这是非常有用的。

你可以通过以下方法获取定义:

1
容器->getDefinition (serviceId);

或者:

1
容器->findDefinition (serviceId);

它不像getDefinition ()也可以解析别名,因此如果serviceId美元参数是一个别名,您将获得底层定义。

服务定义本身是对象,因此如果您使用这些方法检索定义并对其进行更改,这些更改将反映在容器中。然而,如果你正在创建一个新的定义,那么你可以使用以下方法将它添加到容器中:

1
容器->setDefinition (id定义);

使用定义

创建新定义

如果您需要创建一个新的定义,而不是操作从容器中检索的定义,则定义类为定义

首先是定义的类,这是从容器请求服务时返回的对象的类。

要找出定义设置了什么类:

1
定义->getClass ();

并设置一个不同的类:

1
定义->setClass ();//全限定类名

构造函数参数

要获得一个定义的构造函数参数数组,可以使用:

1
定义->getArguments ();

或者根据参数的位置获取单个参数:

1 2
定义->getArgument (指数);/ /。$definition->getArguments(0)用于第一个参数

你可以使用以下命令在arguments数组的末尾添加一个新参数:

1
定义->addArgument (论点);

参数可以是字符串、数组、服务参数% parameter_name %或服务id,使用:

1 2 3 4 5
使用ob娱乐下载组件DependencyInjection参考/ /……定义->addArgument (引用(“service_id”));

以类似的方式,你可以用index替换一个已经设置的参数:

1
定义->replaceArgument (指数论点);

你也可以用一个参数数组替换所有的参数(如果没有也可以设置一些):

1
定义->replaceArguments (参数);

方法调用

如果您正在使用的服务使用setter注入,那么您也可以在定义中操作任何方法调用。

你可以得到一个数组的所有方法调用:

1
定义->getMethodCalls ();

添加一个方法调用:

1
定义->addMethodCall (方法参数);

在哪里美元的方法是方法名,$arguments是用于调用该方法的参数数组。与构造函数参数一样,参数可以是字符串、数组、形参或服务id。

你也可以用一个新方法的数组替换任何现有的方法调用:

1
定义->setMethodCalls (methodCalls);

提示

在页面上的配置示例的PHP代码块中有更多使用定义的特定方法的示例,例如使用工厂创建服务而且管理与父服务的公共依赖关系

请注意

这里更改服务定义的方法只能在容器被编译之前使用,一旦容器被编译,您就不能进一步操作服务定义了。要了解有关编译容器的更多信息,请参见编译容器

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。