使用容器服务定义
编辑本页警告:您正在浏览的文档欧宝官网下载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代码块中有更多使用定义的特定方法的示例,例如使用工厂创建服务而且管理与父服务的公共依赖关系.
请注意
这里更改服务定义的方法只能在容器被编译之前使用,一旦容器被编译,您就不能进一步操作服务定义了。要了解有关编译容器的更多信息,请参见编译容器.