treehouselabs / model-config
用于配置模型枚举的库
v1.2.0
2016-01-15 14:38 UTC
Requires
- php: >=5.5
- ext-stemmer: *
Requires (Dev)
- phpunit/phpunit: ~4.0
- symfony/validator: ~2.4
This package is auto-updated.
Last update: 2024-08-29 04:08:23 UTC
README
此库包含使用预定义配置值(如枚举)配置您的模型的功能。它还提供了一种面向对象的方式来处理这些功能。
要求
- PHP >= 5.5
- 词干扩展: https://github.com/jbboehr/php-stemmer
安装
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)。有关更多信息,请参阅 许可证文件。