brysem/phpenums
最新稳定版本:v1.0.5
Composer 安装命令:
composer require brysem/phpenums
包简介
Enums made simple in PHP.
README 文档
README
Enums made simple in PHP. Providing you with an easy to use interface.
<?php // Assume that this model will now give us access to the property "status" // which has been set to an instance of the UserStatus enum class. $user = new Models\User([ 'status' => new UserStatus(UserStatus::ACTIVE) ]); echo("Hello, your account is currently ". $user->status ."."); // __toString() -> Hello, your account is currently Active. // Get all values. UserStatus::all(); // [1 => 'Pending', 2 => 'Active', 3 => 'Banned'] // Get all keys from the enum. UserStatus::keys(); // [1, 2, 3] $userStatus = new UserStatus(UserStatus::ACTIVE); $userStatus->values(); // [1 => 'Pending', 2 => 'Active', 3 => 'Banned'] // Cast to a string. (string) $user->status; // Active // Perform checks $user->status->is(UserStatus::ACTIVE); // true $user->status->is([UserStatus::ACTIVE, UserStatus::PENDING]); // true (checkes whether the status is active or pending.) $user->status->has(UserStatus::PENDING); // true $user->status->has(1337); // false // Set and get the value. $user->status->value(); // 2 $user->status->set(UserStatus::ACTIVE); // Active $user->status->get(UserStatus::ACTIVE); // Active // Safegaurding against invalid values try { $user->status->set(1337); $user->status->set('undefined'); } catch (UndefinedEnumValueException $e) { // } catch (InvalidArgumentException $e) { // }
Installation
PHP Enums can be installed with Composer.
$ composer require brysem/phpenums
{
"require": {
"brysem/phpenums": "1.*"
}
}
<?php require 'vendor/autoload.php'; use Bryse\Enums\Enum; class UserStatus extends Enum { const PENDING = 1; const ACTIVE = 2; const BANNED = 3; /** * Returns all possible key value pairs for the enum. * * @return array */ public function values() { return [ self::PENDING => 'Pending', self::ACTIVE => 'Active', self::BANNED => 'Banned', ]; } }
Laravel Example
<?php namespace App\Models; use App\Models\Enums\UserType; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { public function getTypeAttribute() { return new UserType($this->attributes['type']); } public function setTypeAttribute($value) { $this->attributes['type'] = (new UserType($value))->value(); } }
You can now easily do the following.
$user->status = UserType::ACTIVE;
Features
- Automatic string casting.
- Useful checks and comparisons.
- Easy to use to any framework or even a plain PHP file.
- PSR-4 autoloading compliant structure.
- Unit-Testing with PHPUnit.
Contributing
Thank you for considering contributing to PHP Enums. Any and all help is appreciated. Please do not hesitate to send a pull request.
License
The PHP Enums package is open-sourced software licensed under the MIT license.
统计信息
- 总下载量: 165.49k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 10
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-07-09