首先,先放一下專案倉庫
Enum
之前在寫專案的時候,通常一個錯誤碼對應一條文案。這就導致我們寫出了這種程式碼
<?php
class ErrorCode{
const ERROR=1000;
const PARAM_ERROR = 1001;
const MESSAGE=[
self::ERROR=>'系統錯誤',
self::PARAM_ERROR=>'引數錯誤',
];
}
隨著我們的errorCode越來越多,就導致當我們拿到錯誤碼時,我們很不容易找到他的錯誤資訊。。而且每次新新增一個code,都要拖到最底下,新增一個message。感覺很不爽。
於是我們的ErrorCode又進行了一次升級。
<?php
class ErrorCode{
const ERROR=1000;
const ERROR_SHOW='系統錯誤';
const PARAM_ERROR = 1001;
const PARAM_ERROR_SHOW='引數錯誤';
public static function getMessage($code){
// 通過反射取出對應的SHOW
}
}
這種寫法剛出來,就被否決了。。沒有最醜,只有更醜的設計,另外,既然都用了反射,為什麼我們不把錯誤資訊放到他的註釋裡呢。
於是便有了這種新的設計,還是蠻有趣的。
<?php
use Xin\Phalcon\Enum\Enum;
class ErrorCode extends Enum
{
/**
* @Message('非法的TOKEN')
*/
public static $ENUM_INVALID_TOKEN = 700;
}
$code = ErrorCode::$ENUM_INVALID_TOKEN;
$message = ErrorCode::getMessage($code); // 非法的TOKEN
是不是很有趣,哈哈哈
PHP7.1以後就能反射拿到const的註釋了,所以升級了一下常量元件
本作品採用《CC 協議》,轉載必須註明作者和本文連結