davidianbonner / enumerated
枚举(Enums)代表一组预定义值。对于确保数据一致性非常有用。
v7.0.0
2024-05-16 13:38 UTC
Requires
- php: ^8.1
- illuminate/support: ^9.30|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.1
- phpunit/phpunit: ~9.5
- squizlabs/php_codesniffer: ^2.3
README
枚举类型(Enum)是一种数据类型,它由一组预定义值组成。这可以用来确保数据一致性。枚举包提供了一个简单的基类,用于创建枚举类型,允许开发者静态定义值。
安装
通过 Composer
$ composer require davidianbonner/enumerated
用法
大多数应用程序都需要某种形式的枚举类型。PHP 目前没有原生的枚举支持(参见:[https://wiki.php.net/rfc/enum](https://wiki.php.net/rfc/enum))。为了解决这个问题,我们通常将预定义值组打包到配置或设置文件中作为数组。但这并不能直接表示数据或其类型。
之前
<?php return [ 'language' => [ 'php' => 'php', 'javascript' => 'js', 'css' => 'css', 'go' => 'go', ], ];
使用方式
$codebase->language = config('language.php'); // or foreach (config('language') as $language) { echo '<option value="'.$language.'">'.$language.'</option>'; }
之后
对于这组值,枚举会是一个更好的选择。
<?php use DavidIanBonner\Enumerated\Enum; class Language extends Enum { const PHP = 'php'; const JAVASCRIPT = 'js'; const GO = 'go'; const CSS = 'css'; }
使用方式
$codebase->language = Language::PHP; // or $type = Language::PHP; $codebase->language = Language::ofType($type)->value(); // or foreach (Language::allValues() as $language) { echo '<option value="'.$language.'">'.$language.'</option>'; }
验证值
值可以与预定义值进行验证
if (Language::isValid($value)) { // Is valid }
Laravel 集合实例
此包需要 Laravel 支持包,以便返回可用值的集合
// Returns an instance of Illuminate\Support\Collection Language::collect();
返回键值
allValues
和 collect
方法将接受一个布尔参数,以返回键/常量名称
$values = Language::allValues(true); // Returns [ 'PHP' => 'php', 'JAVASCRIPT' => 'js', 'CSS' => 'css', 'GO' => 'go', ]
变更日志
有关最近更改的更多信息,请参阅变更日志
测试
$ phpunit test
贡献
安全性
如果您发现任何安全问题,请通过电子邮件davidianbonner@gmail.com联系,而不是使用问题跟踪器。
致谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件