belca/support-constants

用于处理常量和枚举的PHP辅助类。

v1.0.2 2020-03-04 18:43 UTC

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';
}

许可

该包和其他Belca组件是开源软件,在MIT许可下授权。