treehouselabs/model-config

用于配置模型枚举的库

v1.2.0 2016-01-15 14:38 UTC

This package is auto-updated.

Last update: 2024-08-29 04:08:23 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score

此库包含使用预定义配置值(如枚举)配置您的模型的功能。它还提供了一种面向对象的方式来处理这些功能。

要求

安装

composer require treehouselabs/model-config

用法

首先,您需要定义字段配置。假设您有一个房屋模型,其中有一个类型

# Project\Model\Article

class House
{
    protected $type;
}

可用的类型有 "house","apartment" 和 "other"。现在,我们可以引入一个 HouseType 实体,但这主要只包含一个名称,没有其他内容。这就是枚举发挥作用的地方。枚举是包含指向可用值的常量的类。我们可以这样创建一个类型枚举:

# Project\Model\Config\Field\HouseType

use TreeHouse\Model\Config\Field\Enum;

class HouseType extends Enum
{
    const HOUSE     = 1;
    const APARTMENT = 2;
    const OTHER     = 3;
}

现在您可以使用这些常量来设置值,并使其易于阅读

$house = new House();
$house->setType(HouseType::APARTMENT);

多个值

枚举也可以表示为多值字段。例如,我们的房屋模型可能有一些设施

# Project\Model\Config\Field\Facilities

use TreeHouse\Model\Config\Field\Enum;

class Facilities extends Enum
{
    const ELEVATOR        = 1;
    const ALARM           = 2;
    const AIRCONDITIONING = 3;
    const ROLLER_BLINDS   = 4;

    protected static $multiValued = true;
}

请注意,我们如何定义此配置为多值。枚举本身不会对此信息做任何事情。但它在其他地方很有用,我们将在下一部分讨论。

配置

现在我们有一些配置,我们可以将它们捆绑在一个配置对象中。配置对象使用(小写)常量名称映射到它们的值。我们可以使用构建器来完成此操作

$builder = new ConfigBuilder();
$builder->addField('type', HouseType::class);
$builder->addField('facilities', Facilities::class);

$config = $builder->getConfig();

配置对象提供了一些便利方法

$config->isMultiValued('facilities'); // true
$config->hasFieldConfig('foo'); // false
$config->hasFieldConfigKey('type', 2); // true
$config->hasFieldConfigValue('type', 'apartment'); // true
$config->getFieldConfigValueByKey('type', 2); // 'apartment'
$config->getFieldConfigKey('type', 'apartment'); // 2

测试

composer test

安全性

如果您发现任何安全相关的问题,请通过电子邮件 dev@treehouse.nl 而不是使用问题跟踪器。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件

鸣谢