adrenalinkin / enum-mapper
组件提供了一种简单的方法,在PHP层而不是数据库中模拟ENUM行为,并将数据库值转换为人类表示形式,反之亦然。
v1.0.3
2018-02-15 10:58 UTC
Requires
- php: ~5.4||~7.0
Suggests
- adrenalinkin/enum-property-bundle: Provides easy way to integrate with Symfony framework
This package is auto-updated.
Last update: 2024-09-09 02:49:20 UTC
README
介绍
组件提供了一种简单的方法,通过常量使用,在PHP层而不是数据库中模拟ENUM
行为。将数据库值转换为人类表示形式,反之亦然。
安装
打开命令行,进入您的项目目录,并执行以下命令以下载此组件的最新稳定版本
composer require adrenalinkin/enum-mapper
此命令要求您全局安装Composer。
使用示例
映射器创建
首先创建映射器类,并从 AbstractEnumMapper 继承。第二步和最后一步 - 确定具有特定前缀的常量列表
- DB_ - 包含数据库值。
- HUMAN_ - 包含人类化的值。
假设我们需要存储用户的性别。在这种情况下,我们需要创建映射器类
<?php use Linkin\Component\EnumMapper\Mapper\AbstractEnumMapper; class GenderMapper extends AbstractEnumMapper { const DB_UNDEFINED = 0; const DB_MALE = 10; const DB_FEMALE = 20; const HUMAN_UNDEFINED = 'Undefined'; const HUMAN_MALE = 'Male'; const HUMAN_FEMALE = 'Female'; }
使用
fromDbToHuman
通过接收到的数据库值获取人类化值
<?php $mapper = new GenderMapper(); $dbGenderValue = GenderMapper::DB_MALE; // 10 $humanValue = $mapper->fromDbToHuman($dbGenderValue);
变量 $humanValue
将包含 Male
值。 注意:当您尝试获取未注册的值时,将抛出 UndefinedMapValueException
。
fromHumanToDb
通过接收到的人类化值获取数据库值
<?php $mapper = new GenderMapper(); $humanGenderValue = GenderMapper::HUMAN_FEMALE; // Female $dbValue = $mapper->fromHumanToDb($humanGenderValue);
变量 $dbValue
将包含 20
值。 注意:当您尝试获取未注册的值时,将抛出 UndefinedMapValueException
。
getMap
获取数据库值和人类化值的所有可用对的全列表
<?php $mapper = new GenderMapper(); $map = $mapper->getMap(); // [0 => 'Undefined', 10 => 'Male', 20 => 'Female']
常量使用
您始终可以使用常量作为是
<?php if (GenderMapper::DB_UNDEFINED === $maleFromForm) { throw new \Exception('Field "Gender" is required in this form'); }
getAllowedDbValues 和 getAllowedHumanValues
获取数据库值或人类化值的所有可用值列表
<?php $mapper = new GenderMapper(); $allowedDb = $mapper->getAllowedDbValues(); // [0, 10, 20] $allowedHuman = $mapper->getAllowedHumanValues(); // ['Undefined', 'Male', 'Female'] // Exclude values from result $allowedDb = $mapper->getAllowedDbValues([GenderMapper::DB_UNDEFINED]); // [10, 20] $allowedHuman = $mapper->getAllowedHumanValues([GenderMapper::HUMAN_UNDEFINED]); // ['Male', 'Female']
getRandomDbValue и getRandomHumanValue
获取随机数据库或人类化值
<?php $mapper = new GenderMapper(); $randomDb = $mapper->getRandomDbValue(); // 0 || 10 || 20 $randomHuman = $mapper->getRandomHumanValue(); // Undefined || Male || Female // Exclude values from result $randomDb = $mapper->getRandomDbValue([GenderMapper::DB_UNDEFINED]); // 10 || 20 $randomHuman = $mapper->getRandomHumanValue([GenderMapper::HUMAN_UNDEFINED]); // Male || Female