处理容器服务定义

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.6,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 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 (美元指数);/ /例如$定义- > getArgument为第一个参数(0)

你可以添加一个新参数的参数数组使用:

1
美元定义- >addArgument (美元论点);

参数可以是一个字符串,通过使用一个数组,一个服务参数% parameter_name %或服务id使用:

1 2 3 4 5
使用欧宝娱乐app下载地址\组件\DependencyInjection\参考;/ /……美元定义- >addArgument (引用(“service_id”));

以类似的方式你可以换一个已经设置参数通过索引使用:

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

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

1
美元定义- >setArguments (美元参数);

方法调用

如果服务您正在与使用setter注入就可以操纵定义中的任何方法调用。

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

1
美元定义- >getMethodCalls ();

添加一个方法调用:

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

在哪里美元的方法方法名和吗美元的参数是一个数组的参数调用该方法。参数可以是字符串、数组参数或服务id作为构造函数参数。

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

1
美元定义- >setMethodCalls (美元methodCalls);

提示

有更多的例子,具体的工作方式与定义的PHP代码块配置示例页等使用一个工厂来创建服务与家长服务管理常见的依赖关系

请注意

改变服务定义的方法只能用在容器被编译。一旦容器被编译不能操作进一步服务定义。更多地了解编译容器编译的容器

要求的文件

会用例之前当你需要包含另一个文件服务本身被加载。为此,您可以使用setFile ()方法:

1
美元定义- >setFile (' / / /文件/ src /路径直接给的);

注意,Symfony会在欧宝娱乐app下载地址内部调用PHP语句require_once,这意味着每个请求的文件只包含一次。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。