belca / support-constants
用于处理常量和枚举的PHP辅助类。
Requires (Dev)
- phpunit/phpunit: ^6
This package is auto-updated.
Last update: 2024-09-05 04:40:28 UTC
README
该文档适用于版本1.0。
PHP常量的支持类。
命名常量和枚举用于不可变值。包中的类包含获取常量列表及其值而不抛出PHP异常的函数。
use Belca\Support\AbstractEnum; class MyConstants extends AbstractEnum { const DEFAULT = self::USER; const USER = 'user'; const ADMIN = 'administrator'; const CLIENT = 'client'; } // ... $constants = MyConstants::list(); // Output $constants: [ // 'USER' => 'user', // 'ADMIN' => 'superuser', // 'CLIENT' => 'client', // ] $default = MyConstants::getDefault(); // only using AbstractEnum // or $default = MyConstants::DEFAULT; // Output $default: 'user'
简介
使用Composer或手动安装包。
composer require belca/support-constants:1.*
使用其中一个类。
use Belca\Support\AbstractConstants; // or use Belca\Support\AbstractEnum;
使用它们的特性!
AbstractConstants AbstractEnum
AbstractConstants
AbstractConstants是实现一组命名常量和获取它们值的抽象类。
请看下面的示例。下面是实现常量的基本(第一个)类。
示例1:实现第一个(父)类
namespace AnyoneVendor\MyPackage\Enums; use Belca\Support\AbstractConstants; class Roles extends AbstractConstants { const USER = 'user'; const SUPERUSER = 'superuser'; const CLIENT = 'client'; const MODERATOR = 'moderator'; const SUPERMODERATOR = 'superuser'; }
实现类后,您可以从这个类中获取常量列表。使用list()
或getConstants()
来做这件事。
示例2:获取父类的所有常量
$constants = Roles::list(); // or $constants = Roles::getConstants(); // Output $constants: [ // 'USER' => 'user', // 'SUPERUSER' => 'superuser', // 'CLIENT' => 'client', // 'MODERATOR' => 'moderator', // 'SUPERMODERATOR' => 'superuser', // ]
如果您想获取一个值,则使用getConst()
函数。该函数获取常量的大小写敏感名称。按照惯例,常量标识符始终为大写。
示例3:获取类的常量值
$user = Roles::getConst('USER'); // Output: 'user' $superuser = Roles::getConst('SUPERUSER'); // Output: 'superuser' $root = Roles::getConst('ROOT'); // Output: null, because it is not defined $user = Roles::getConst('user'); // Output: null, because the constant was defined in uppercase
Roles
类包含我们的常量。您可能还需要其他常量。扩展类以解决问题。这在使用第三方类时需要。
示例4:扩展父类
namespace App\Enums; use AnyoneVendor\MyPackage\Enums\Roles as BaseRoles; class Roles extends BaseRoles { // Defines new constants const VIEWER = 'viewer'; const CHECKER = 'checker'; const TESTER = 'tester'; // Replaces old values of constants const SUPERUSER = 'root'; const SUPERMODERATOR = 'supermoderator'; }
请看新子类的示例。
示例5:检查现有常量
Roles::isDefined('SUPERUSER'); // true Roles::isDefined('ROOT'); // false
示例6:获取新常量
$constants = Roles::list(); // Output $constants: [ // 'USER' => 'user', // 'SUPERUSER' => 'root', // 'CLIENT' => 'client', // 'MODERATOR' => 'moderator', // 'SUPERMODERATOR' => 'superuser', // 'VIEWER' => 'viewer', // 'CHECKER' => 'checker', // ]
示例6:获取替换常量的值
$superuser = Roles::getConst('SUPERUSER'); // 'root'
您可以使用标准的PHP语法获取一些常量。如果尝试获取未定义的常量,则会捕获错误。如果您不确定现有的常量,请使用getConst()
函数,您将不会捕获错误。
示例7:使用标准PHP函数获取值
$superuser = Roles::SUPERUSER; // 'root' $root = Roles::ROOT; // Error: Undefined class constant 'ROOT'
AbstractEnum
AbstractEnum是实现一组命名常量和获取它们值的抽象类。它扩展自AbstractConstants。
与Belca\Support\AbstractConstants
类相比,Belca\Support\AbstractEnum
使用具有默认值的常量。
返回常量列表的函数不返回DEFAULT常量。
此类有一个新功能:getDefault()
函数。其他函数相同。
示例8:使用默认值实现第一个(父)类
namespace AnyoneVendor\MyPackage\Enums; use Belca\Support\AbstractEnum; class Roles extends AbstractEnum { const DEFAULT = self::USER; const USER = 'user'; const SUPERUSER = 'root'; const CLIENT = 'client'; }
使用getDefault()
函数获取默认值。
示例9:获取默认值
$default = Roles::getDefault(); // 'user'
您还可以使用PHP语法获取默认值。
示例10:使用PHP语法获取默认值
$default = Roles::DEFAULT; // 'user'
您可以通过扩展类来重新定义默认常量。
示例11:重新定义默认常量
namespace App\Enums; use AnyoneVendor\MyPackage\Enums\Roles as BaseRoles; class Roles extends BaseRoles { const DEFAULT = self::UNREGISTRED; const UNREGISTERED = 'unregistered'; }