eclipxe/construct-named-parameters

使用数组作为命名参数创建对象的辅助函数

v1.1.0 2017-06-21 15:19 UTC

This package is auto-updated.

Last update: 2024-09-09 18:24:14 UTC


README

Source Code Latest Version Software License Build Status Scrutinizer Coverage Status Total Downloads SensioLabsInsight

PHP没有通过命名参数调用方法或实例对象的选择。这是一个我在其他项目中使用的库,用于简化基于命名参数创建对象的任务。

参见PHP RFC: 命名参数

安装

使用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以获取详细信息,并不要忘记查看TODOCHANGELOG文件。

版权和许可

construct-named-parameters库版权所有© Carlos C Soto,并许可在MIT许可(MIT)下使用。有关更多信息,请参阅LICENSE