yii2中項目中對tinyint中各種值的處理-enum類的封裝使用

數據庫中經常會使用tinyint 的字段如:

status : -1刪除;0禁用;1啓用;

schooleType : 1小學;2中學;3高中;4大學;等

爲了避免在 控制器,模型,視圖中大量出現硬編碼情況。要使用常量來代替 1,2,3這樣數值;

代碼如下;


namespace common\enums;

use Yii;

trait Enum
{

    public static function getText($int) :string
    {
        return isset(self::getListExplain()[$int]) ? self::getListExplain()[$int] : '';
    }

    public static function getInt($name) :int
    {

        $nameArr = array_flip(self::getListExplain());
        return isset($nameArr[$name]) ? $nameArr[$name] : 0; //對應數據庫默認值
    }
}

-------------------------------------------------------------------

namespace common\enums;

use Yii;

class ApplyDegreeTypeEnum
{
    use Enum;

    const BACHELOR = 1;
    const MASTER = 2;
    const DOCTOR = 3;


    public static function getListExplain(){

        return [
            self::BACHELOR => Yii::t('common/enum', '本科'),
            self::MASTER => Yii::t('common/enum', '碩士'),
            self::DOCTOR => Yii::t('common/enum', '博士'),
        ];
    }

}

分析:一開始使用的是 父類繼承結果總是 無法使用子類 的 東西;使用trait 則可以 調用static 函數來使用。

原則:最好要通過函數來使用 類的屬性(特別是數組)這樣可以把對 特殊情況(非空,不存在的)情況進行判斷處理,外部調用者就不用再考慮那些個情況了。

對 數值 的 文本展示 支持 多語言版本。關鍵是使用 Yii::t()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章