PHP code example of asfop / constants

1. Go to this page and download the library: Download asfop/constants library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

asfop / constants example snippets




class ErrorCode
{
    const SERVER_ERROR = 500;
    const PARAMS_INVALID = 1000;

    public static $messages = [
        self::SERVER_ERROR => 'Server Error',
        self::PARAMS_INVALID => '参数非法'
    ];
}

$message = ErrorCode::messages[ErrorCode::SERVER_ERROR] ?? '未知错误';




use Asfop\Constants\Constant;

class ExampleConstant extends Constant
{
    /**
     * @message("登录")
     */
    const SIGN_IN = 0;
    /**
     * @message("注册")
     */
    const REGISTER = 1;
    /**
     * @message("找回密码")
     */
    const RETRIEVE_PASSWORD = 2;
    /**
     * @message("注销账号")
     * @messageEn("Account cancellation")
     * @messageZhTW("註銷賬號")
     */
    const CANCEL_ACCOUNT = 3;

//    /**
//     * 重写从注解里面拿到的Message
//     * @param mixed $description 描述
//     * @param mixed $key key
//     * @param mixed $value 值
//     * @return mixed
//     */
//    protected static function message($description, $key, $value)
//    {
//        return $description;
//    }

}

// 获取常量的值
ExampleConstant::SIGN_IN;// 0

// 获取所有已定义常量的名称
$keys = ExampleConstant::getKeys();// ['SIGN_IN ', 'REGISTER', 'RETRIEVE_PASSWORD ', 'CANCEL_ACCOUNT']

// 根据常量的值获取常量的名称
ExampleConstant::getKey(1);// REGISTER 

// 获取所有已定义常量的值
$values = ExampleConstant::getValues();// [0, 1, 2, 3]

// 根据常量的名称获取常量的值
ExampleConstant::getValue('REGISTER ');// 1


// 返回中文描述
ExampleConstant::getDescription(ExampleConstant::CANCEL_ACCOUNT);// 注销账号

// 返回指定语言描述,参数二为语言文化代码,在枚举注解中无需“-”
ExampleConstant::getDescriptionI18n(ExampleConstant::CANCEL_ACCOUNT, 'en');// Account cancellation

// 补充:也可以先实例化常量对象,然后再根据对象实例来获取常量描述
$responseEnum = new ExampleEnum(ExampleEnum::CANCEL_ACCOUNT);
$responseEnum->description;// 注销账号

// 其他方式
ExampleConstant::CANCEL_ACCOUNT()->description;// 注销账号


// 检查定义的常量中是否包含某个「常量值」
ExampleConstant::hasValue(1);// true
ExampleConstant::hasValue(-1);// false

// 检查定义的常量中是否包含某个「常量名称」 

ExampleConstant::hasKey('CANCEL_ACCOUNT ');// true
ExampleConstant::hasKey('ACCOUNT ');// false

// 方式一:new 传入常量的值
$administrator1 = new ExampleConstant(ExampleConstant::CANCEL_ACCOUNT);

// 方式二:fromValue
$administrator2 = ExampleConstant::fromValue(0);

Asfop\Tests\Constants\ExampleConstant Object
(
    [description] => 登录
    [key] => SIGN_IN
    [value] => 0
)

// 方式三:fromKey
$administrator3 = ExampleConstant::fromKey('CANCEL_ACCOUNT');

Asfop\Tests\Constants\ExampleConstant Object
(
    [description] => 注销账号
    [key] => CANCEL_ACCOUNT
    [value] => 3
)

// 方式四:magic
$administrator4 = ExampleConstant::CANCEL_ACCOUNT();

Asfop\Tests\Constants\ExampleConstant Object
(
    [description] => 注销账号
    [key] => CANCEL_ACCOUNT
    [value] => 3
)


$array = ExampleConstant::toArray();

/*
[
    'SIGN_IN' => 0,
    'REGISTER' => 1,
    'RETRIEVE_PASSWORD' => 2,
    'CANCEL_ACCOUNT' => 3,
]
*/

$array = ExampleConstant::toSelectArray();

/*
[
  0 => '登录',
  1 => '注册',
  2 => '找回密码',
  3 => '注销账号',
]
*/



// 枚举可以存在多个注解,枚举定义:
/**
 * @message("注销账号")
 * @color("danger")
 * ...
 */
const CANCEL_ACCOUNT = 0;

// 使用,获取指定枚举单个注解值
ExampleConstant::getAnnotationOne(ExampleConstant::CANCEL_ACCOUNT, 'color');// danger
// 获取指定枚举所有注解值
ExampleConstant::getAnnotationList(ExampleConstant::CANCEL_ACCOUNT);

/*
[
  {
    "function": "message",
    "value": "注销账号"
  },
  {
    "function": "color",
    "value": "danger"
  }
]
*/