nayjest/builder

使用配置实例化对象的PHP包

v2.1.0 2016-02-11 17:10 UTC

This package is auto-updated.

Last update: 2024-09-17 22:57:15 UTC


README

使用配置构造对象的PHP包。

Codacy Badge Code Climate Scrutinizer Code Quality Code Coverage Build Status Latest Stable Version Dependency Status

SensioLabsInsight

1. 要求

  • php 5.4+

此包未与过时的PHP版本进行测试。

如果您需要在php <= 5.3的环境中使用nayjest/builder,请自行测试。

2. 安装

推荐通过Composer安装此组件。

运行以下命令

composer require nayjest/builder

3. 概览

3.1 目的

以架构美观的方式从配置中构建复杂对象。

3.2 说明

如果您熟悉建造者设计模式,此包允许您以声明式风格创建基于构建配置的类构建器。

3.3 使用方法

3.3.1 类蓝图

当您需要构建某些类型的对象时,首先需要为该类型创建蓝图。在此包的术语中,蓝图指定了如何构建指定类型的对象。它存储类名和一组构建指令。

use Nayjest\Builder\Blueprint;
$blueprint = new Blueprint(
  '\My\ExamplePackage\Person',  # Constructed class name
  []                            # Array of build instructions
);
3.3.2 构建器

接下来,您将使用之前创建的蓝图作为构造函数参数来实例化一个构建器。在此包的术语中,构建器是Nayjest.Builder.Builder类的实例,用构建的类的蓝图初始化。此对象有一个公开的build($input)方法,它接受构建类的配置,构建实例并返回它。

构建器适合重用。您可以使用相同的构建器使用相同的蓝图构建多个对象。

use Nayjest\Builder\Builder;

$builder = new Builder($blueprint);

$john = $builder->build([
  'name' => 'John',
  'age' => 27
]);

var_dump($john instanceof \My\ExamplePackage\Person); // result: true
var_dump($john->getAge());  // result: 27
3.3.3 脚手架和指令

在构建目标对象的过程中,构建器创建一个临时对象,称为脚手架。脚手架包含构建对象所需的所有信息(输入配置、类名、构造函数参数、当它准备好时的目标实例)。

此类非常重要,因为所有构建指令都与脚手架一起工作,脚手架提供接口以访问指令所需的所有数据。

最后,指令。在此包的术语中,指令是实现了Nayjest\Builder\Instructions\Base\InstructionInterface的类的实例,并且可以修改脚手架内部的数据。

存在一组预定义的指令,但您可以创建自己的(使用用户函数执行所需操作的Nayjest\Builder\Instructions\Base\Instruction\CustomInstruction的方式是肮脏的)。

此外,实例化目标对象和设置公共属性或具有相应名称的setter(例如,对于输入字段'some_attribute'使用setSomeAttribute($val))不需要在类蓝图中有特定指令,这是默认操作。

4. 构建指令

Nayjest\Builder\Instructions\CustomInstruction

将用户函数应用于脚手架。

Nayjest\Builder\Instructions\SetValue

可用于在构建配置中指定默认值或覆盖现有值。

Nayjest\Builder\Instructions\Remove

如果存在,则从输入配置中删除值。

Nayjest\Builder\Instructions\Mapping\Build

使用指定的类蓝图替换值。

Nayjest\Builder\Instructions\Mapping\BuildChildren

使用指定的类蓝图替换目标字段内的数组元素。

Nayjest\Builder\Instructions\Mapping\ClassName

使用指定字段的值作为目标类名。

Nayjest\Builder\Instructions\Mapping\ConstructorArgument

使用指定字段的值作为构造函数参数。

Nayjest\Builder\Instructions\Mapping\CustomMapping

将用户函数应用于指定字段。

纳杰斯特.构建器.指令.映射.重命名

在输入配置中重命名指定的字段。

5. 测试

运行以下命令

phpunit

6. 许可证

© 2014 — 2015 维塔利·斯捷潘诺克

许可协议为MIT许可证。

请参阅许可证文件获取更多信息。