Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adrenalinkin/enum-mapper
Component provides easy way to emulate ENUM behaviour on the PHP layer instead database and convert database value into human representation and vise versa
https://github.com/adrenalinkin/enum-mapper
component enum-mapper human-readable humanize humanized-values
Last synced: 11 days ago
JSON representation
Component provides easy way to emulate ENUM behaviour on the PHP layer instead database and convert database value into human representation and vise versa
- Host: GitHub
- URL: https://github.com/adrenalinkin/enum-mapper
- Owner: adrenalinkin
- License: mit
- Created: 2018-02-15T10:59:44.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-04-10T10:31:09.000Z (over 6 years ago)
- Last Synced: 2024-10-11T23:05:41.943Z (2 months ago)
- Topics: component, enum-mapper, human-readable, humanize, humanized-values
- Language: PHP
- Homepage:
- Size: 11.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.RU.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Enum Mapper [![In English](https://img.shields.io/badge/Switch_To-English-green.svg?style=flat-square)](./README.md)
===========Введение
--------Компонент обеспечивает эмуляцию поведения `ENUM` поля баз данных на уровне `PHP` посредством констант класса `PHP`.
Установка
---------Откройте консоль и, перейдя в директорию проекта, выполните следующую команду для загрузки наиболее подходящей
стабильной версии этого компонента:
```bash
composer require adrenalinkin/enum-mapper
```
*Эта команда подразумевает что [Composer](https://getcomposer.org) установлен и доступен глобально.*Пример использования
--------------------### Создание маппера
Для начала создаем класс-маппер и наследуем абстрактный класс [AbstractEnumMapper](./Mapper/AbstractEnumMapper.php).
Вторым и завершающим этапом является определение набора констант со специальными префиксами:
* **DB_** - содержит значение из базы данных.
* **HUMAN_** - содержит значение в человеко-понятной форме.Допустим у вас имеется необходимость хранить пол пользователей сайта. Тогда ваш класс будет иметь следующий вид:
```php
fromDbToHuman($dbGenderValue);
```Переменная `$humanValue` будет содержать значение `Male`.
**Примечание**: При попытке получить представление для незарегистрированного значения будет брошено исключение
`UndefinedMapValueException`.#### fromHumanToDb
Получение значения для хранения в базе данных на основе человеко-понятного представления:
```php
fromHumanToDb($humanGenderValue);
```Переменная `$dbValue` будет содержать значение `20`.
**Примечание**: При попытке получить представление для незарегистрированного значения будет брошено исключение
`UndefinedMapValueException`.#### getMap
Получение полного списка соответствий значений из базы данных и их человеко-понятных значений:
```php
getMap(); // [0 => 'Undefined', 10 => 'Male', 20 => 'Female']
```### Использование констант
Всегда доступен стандартный вызов констант:
```php
getAllowedDbValues(); // [0, 10, 20]
$allowedHuman = $mapper->getAllowedHumanValues(); // ['Undefined', 'Male', 'Female']// Исключение значений из возвращаемого результата
$allowedDb = $mapper->getAllowedDbValues([GenderMapper::DB_UNDEFINED]); // [10, 20]
$allowedHuman = $mapper->getAllowedHumanValues([GenderMapper::HUMAN_UNDEFINED]); // ['Male', 'Female']
```#### getRandomDbValue и getRandomHumanValue
Получение случайного значения одного из доступных значений базы данных или человеко-понятного представления:
```php
getRandomDbValue(); // 0 || 10 || 20
$randomHuman = $mapper->getRandomHumanValue(); // Undefined || Male || Female// Исключение значений из возвращаемого результата
$randomDb = $mapper->getRandomDbValue([GenderMapper::DB_UNDEFINED]); // 10 || 20
$randomHuman = $mapper->getRandomHumanValue([GenderMapper::HUMAN_UNDEFINED]); // Male || Female
```Лицензия
--------[![license](https://img.shields.io/badge/License-MIT-green.svg?style=flat-square)](./LICENSE)