eclipxe / construct-named-parameters
使用数组作为命名参数创建对象的辅助函数
v1.1.0
2017-06-21 15:19 UTC
Requires
- php: >=5.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.3
- jakub-onderka/php-parallel-lint: ^0.9.2
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-09 18:24:14 UTC
README
PHP没有通过命名参数调用方法或实例对象的选择。这是一个我在其他项目中使用的库,用于简化基于命名参数创建对象的任务。
安装
使用composer安装此库 composer require eclipxe/construct-named-parameters
基本用法
<?php class Foo { public function __construct($a, $b, $c, $d) {} } $foo = construct_named_parameters(Foo::class, [ 'd' => 123, 'b' => 'second', 'a' => 'a argument', 'c' => false, 'xtra' => 'baz', ]); // this will return the result of: new Foo('a argument', 'second', false, 123);
为什么这个库存在?
我的动机始于一个包含大量需要实例化的域对象的项目,通常我都在一个数组中拥有所有信息。在这种情况下,这个库非常有用。
它甚至包含一个方法,将所有参数和值转换为小写,以轻松匹配构造函数的要求。请注意,在一些奇怪的情况下,构造函数可能包含两个名称相同但大小写不同的参数。
它如何知道构造函数参数?
我找到的唯一方法是使用\Reflection
。
缺点是反射可能很昂贵。
优点是函数\ConstructNamedParameters\Builder::retrieveArguments
有类的名称缓存,因此它只会第一次调查构造函数,第二次将使用缓存的信息。
缓存不能被清除或强制重新加载,而且没有必要这样做。一旦类存在,其构造函数就不能更改,对吧?
关于公共函数
贡献
欢迎贡献!请阅读CONTRIBUTING以获取详细信息,并不要忘记查看TODO和CHANGELOG文件。
版权和许可
construct-named-parameters库版权所有© Carlos C Soto,并许可在MIT许可(MIT)下使用。有关更多信息,请参阅LICENSE。