维基媒体/对象-工厂

根据配置说明构造对象

5.0.1版 2023-01-09 21:59 UTC

此软件包是自动更新的。

上次更新时间:2024-04-12 22:37:03 UTC


自述文件

根据配置说明构造对象。

它可以静态使用,也可以作为包装PSR-11服务容器的服务用于使用依赖注入延迟实例化对象。

规格数组

规范数组的内容如下:

“工厂”=>可调用,“class”=>字符串,

规范数组必须包含具有字符串值的“class”键指定要实例化的类名或带有可调用(is_callable()===true)。如果两者都通过,则“工厂”需要但如果结果对象不是命名类的实例。

“args”=>数组,“closure_expansion”=>bool,//默认为true“spec_is_arg”=>bool,//默认为false“services”=>(string|null)[],//默认为空'optional_services'=>(string|null)[],//默认为空

“args”键(如果提供)指定要传递给构造函数/可调用的参数。“args”中作为Closure实例的值将通过调用扩展在将结果值传递给构造函数/可调用。这可用于将活动对象传递给构造函数/可调用。可以通过添加closure_expansion=>false不符合规范。

如果规范中有'spec_is_arg'=>true,则忽略'args'。这个整个规范数组被传递给构造函数/可调用数组。

如果提供了“服务”且非空(并且服务容器可用),命名服务是从PSR-11服务容器请求的前缀在“args”之前。无效的“services”中的值被传递给构造函数保持不变。

通过“Optional_services”声明的可选服务处理相同,除非服务容器中的服务不可用无效的而是作为参数传递。附加可选服务在正常所需服务之后

如果在选项中向getObjectFromSpec()或createObject(),它们在“services”和“args”之前。使用extraArgs(外部参数)键,以及无论主参数列表已展开。

“calls”=>数组

规范还可能包含描述方法的“调用”键在返回新创建的对象之前对其进行调用。这该模式通常被称为“setter注入”。此键的值为应该是一个关联数组,方法名作为键参数列为值。参数列表将被展开(或不展开)与主对象的“args”键相同。

注意,这些调用不会传递额外的参数。

安装

$composer需要wikimedia/object-factory

用法

<?php(电话)

$规格=========================================================[//简单的基于构造函数的注入
	'测试数据库'=> [“类”=>项目开发办公室::类,'参数'=> ['mysql:dbname=testdb;主机=127.0.0.1','数据库用户',“dbpass”,],],];$数据库=ObjectFactory(对象工厂)时间:从规范获取对象($规格['测试数据库'] ):

许可证

Wikimedia ObjectFactory是根据GNU通用公共许可证授权的,版本2和任何更高版本(GPL-2.0或-later)。请参阅复制文件以获取更多详细信息。