成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

聊聊Laravel中怎么使用枚舉

Laravel中怎么使用枚舉?下面本篇文章給大家介紹一下在 Laravel 中使用枚舉的方法,希望對大家有所幫助!

聊聊Laravel中怎么使用枚舉

Laravel 9 保姆級視頻教程,想學不會都難!進入學習

我是enums的忠實粉絲最近,我在一家使用C#的公司工作,那里廣泛使用enum,我已經習慣了在找不到它們的時候,能夠找到它們,并想念它們。

我將它們用于任何具有有限一組可能選項的事情,例如一周中的幾天、訂單的狀態,或者,如下面的示例中所示,用戶類型。

使用枚舉有幾個好處:

-減少因轉置或錯誤輸入數字而導致的錯誤。

-使將來改變價值觀變得容易。

-使代碼更易于閱讀,這意味著不太可能有錯誤潛入其中。

-確保前向兼容性使用枚舉時,如果將來有人更改與成員名稱對應的值,可以大大降低你的代碼失敗幾率。

PHP 本身并不支持枚舉,但是使用類中的常量相當容易實現等價的效果。 此外,我還創建了一個名為 laravel-enum 的 Laravel 包。 它允許你訪問幫助函數,例如列出鍵和值,將描述附加到值上,以及驗證期望枚舉值的請求。

本指南逐步介紹了安裝的過程 Laravel package 包括用法和最佳實踐的示例。

安裝包

可以通過 composer 在終端中運以下命令來安裝包:

$ composer require bensampo/laravel-enum

如果你使用的是低于5.5的 Laravel 版本,你需要將服務提供者添加到 config/app.php.

'BenSampoEnumEnumServiceProvider'

創建第一個枚舉

我們將為用戶類型創建一個枚舉在我們的示例應用程序中,用戶可以屬于以下三種用戶類型之一:管理員、付費成員、成員。

包中包含用于創建枚舉的生成器,因此可以運行以下命令來創建名為UserType的枚舉該文件將在“app/Enums/UserType.php”中創建

php artisan make:enum UserType

你將在這個文件中看到一定數量的腳手架。在文件頂部附近,可能的選項列表被定義為常量。這些常量值存儲在數據庫中,因此我發現最好是使用整數,但是并沒有限制一定要使用整數,只要每一個值都是唯一就可以了了。

本例中的選項看起來是這樣的:

const Administrator = 0; const PaidMember = 1; const Member = 2;

把值存儲在數據庫中

現在我們有了一個帶有一些可能性的枚舉,并且可以開始使用它。在遷移 user 表時, 可以添加以下內容。

$table->tinyInteger('type')->unsigned()->default(UserType::Member);

因為 null 不是枚舉的選項,我們需要為它設置默認值。在這個例子中,有必要去假設默認情況下的用戶將成為標準成員。

確保文件的頂部包含此枚舉的 use 語句。

use AppEnumsUserType;

在操作中使用枚舉

由于我們現在的用戶模型具有類型的屬性,我們可以對它進行訪問,并和 enum 值進行比較。這就是枚舉真正的好處,也是我為什么如此喜歡他們。看一下下面的用法示例和可能替代的方法。

if ($user->type === UserType::PaidMember) {     // 在這里只是做一些付費會員的事情. }

如果我們不使用枚舉,可能會有類似以下的代碼:

if ($user->type === 1) { // 這個1表示什么??     // ... }  if ($user->type === 'PaidMember') { // 這他媽咋么又是字符串 ?     // ... }

使用枚舉的第一個例子是最容易讀懂并且也是最不容易出錯的例子。如果我偶然輸入了 UserType::Paidember (注意拼寫錯誤),我會得到一個很好的錯誤提示,告訴我代碼錯誤了(類中不存在這個常量值),而不是像前兩個示例那樣默默的失敗。(只是判斷不符合條件,你還需要根據當前的條件語句去具體的查看相關代碼?)

顯示枚舉

在應用的某些界面,我們可能希望向用戶顯示他們所屬的用戶類型。如果只是簡單的輸出從數據庫所獲取的整型值,顯然達不到我們想要的結果。相反,可使用每個枚舉類所繼承基類的 getDescription 方法。

在 blade 模板上的操作如下:

<p>{{ AppEnumsUserType::getDescription($user->type) }}</p>

輸出結果Administrator(管理員),PaidMember(付費會員) 、Member(會員)中的一個。

有時候關鍵詞名稱是復合詞(就像 PaidMember),我們想要展示和鍵名不同的東西。我們可以像下面這樣覆蓋掉當前枚舉的描述。 在 app/Enums/UserType.php:

public static function getDescription(int $value): string {     switch ($value) {         case self::PaidMember:             return 'Paid member';         break;         default:             return self::getKey($value);     } }

現在當我們調用 getDescription 我們將獲取到 Administrator, Paid member or Member.

驗證方式

通過用戶的輸入,對枚舉值進行修改時,最好能確保我們僅僅接受有效的值。我們可以使用包中的驗證規則。

當以表格展示枚舉的時候,我經常把他們顯示為 HTML select 元素。這樣雖仍然可以被惡意修改,但是避免了將錯誤的值傳遞給服務器的情況。

繼續我們的用戶使用示例,讓我們在用戶控制器中處理修改的值:

public function store(Request $request) {     $this->validate($request, [         'type' => ['required', new EnumValue(UserType::class)],     ]);      // 保存用戶等等... }

記住要同時包含枚舉的 use 語句和 EnumValue 的規則。

use AppEnumsUserType; use BenSampoEnumRulesEnumValue;

結束

當然這并不是枚舉所能完成的全部范圍。但是它覆蓋了90%的用例。

值得一看的列表 枚舉類上的方法的完整列表 以查看您還能實現什么。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
偷窥@MADSEXTUBE| 国内揄拍国内精品人妻浪潮AV| 公侵犯人妻一区二区三区| 欧美国产亚洲日韩在线二区| 亚洲AV无码成人精品区天堂 | 亚洲VA在线∨A天堂VA欧美V| 国产乱来乱子视频| 无码国产精品一区二区VR老人| 国产97在线 | 亚洲| 试看A级看一毛片二十分钟| 丰满妇女BBWBBWBBWBB| 色偷偷AV男人的天堂| 粗大黑人巨精大战欧美成人| 日韩AV高清无码| 成人影院永久免费观看网址| 日韩精品无码人妻一区二区三区| 成人精品一区二区三区在线观看| 日本人XXXX裸体XXXX| 吃瓜网最新官网地址| 日本熟妇人妻XXXXX| 赤裸人妻撅起肥白大屁股| 色欲AⅤ亚洲情无码AV蜜桃| 丰满少妇AAAAAA爰片毛片| 少妇粉嫩小泬白浆流出| 8AV国产精品爽爽ⅤA在线观看 | 少妇搡BBBB搡BBB搡| 国产95在线 | 传媒麻豆有限| 熟女性饥渴一区二区三区| 国产激情无码一区二区APP| 无码人妻av一区二区三区毛片| 国产精品麻豆VA在线播放| 亚洲AⅤ日韩AV电影在线观看| 好爽又高潮了毛片免费下载| 亚洲精品无码久久久久SM| 久久成人国产精品无码| 亚洲综合国产精品第一页| 老女人性饥渴XXXXⅩHD| 亚洲AV丰满熟妇一区| 激情内射亚洲一区二区三区爱妻| 亚洲欧美成人A∨在线观看| 国产日韩欧美一区二区东京热| 色偷偷88888欧美精品久久久| 高潮潮喷奶水飞溅视频无码| 无码一区二区三区亚洲人妻| 狠狠色噜噜狠狠狠狠色综合久| 亚洲色欲色欱WWW在线| 另类小说激情婷婷久久| AV狠狠色超碰丁香婷婷综合久久| 秋霞国产午夜伦午夜福利片| 俄罗斯性孕妇孕交| 午夜三级A三级三点窝| 精品乱码久久久久久中文字幕| 亚洲 小说区 图片区 都市| 狠狠婷婷色五月中文字幕| 亚洲综合色区另类小说| 女厕脱裤撒尿大全视频| 把腿扒开让我舔免费视频| 撕开奶罩揉吮奶头免费视频| 国内永久免费CRM系统Z在线| 又大又粗欧美成人网站| 欧洲精品VA无码一区二区三区| 粉嫩被黑人两根粗大猛烈进出视频 | 国产成人亚洲精品无码MP4 | 办公室撕开奶罩揉吮奶头H文 | 国产精品一国产精品一K频道| 亚洲加勒比无码一区二区| 廖承宇做受被C22分钟视频| 啊灬啊灬啊灬快好深| 无码精品人妻一区二区三区漫画| 精品国产亚洲AV麻豆| 51无码人妻精品1国产| 少妇三级全黄在线播放| 精品国产一区二区三区麻豆| 18禁美女裸体网站无遮挡| 涩爱AV挺进少妇张开双暴躁| 护士趴下光屁股翘臀被打的作文| 中文在线天堂А√在线| 三妻四妾免费观看完整版高清| 成年无码AV片在线狼人| 小荡货奶真大水多好紧视频| 久久久久久久精品免费久精品蜜桃 | 少妇精品揄拍高潮少妇| 精品国产一区二区三区久久久狼 | 天天拍天天看天天做| 精品人妻无码视频一区二区三区 | 香蕉97超级碰碰碰视频| 久久亚洲AV无码西西人体| 宝宝湿透了还嘴硬怎么回事 | FREE性满足VIDE0SHD| 无码人妻精品一区二区三区不卡| 久久久噜噜噜久噜久久 | 精品国产国语对白久久免费| BT天堂在线WWW最新版官网| 乌克兰XXXXXLMEDJYF| 国产风流老太婆大BBBHD视频| 亚洲欧洲成人A∨在线观看| 欧美熟妇精品一区二区三区| 国产啪精品视频网站免费| 18禁自慰网址进入| 无人高清视频完整版在线观看| 麻豆传播媒体APP官网在线观看| 多毛熟女HDVIDOS| 亚洲熟妇无码爱V在线观看| 日韩精品一区二区亚洲AV | 锕锕锕锕锕锕锕锕好疼小视频软件| 性饥渴老头XXXXⅩHD| 欧美成人精品视频在线观看| 国产强伦姧在线观看无码| 4D肉蒲团之性奴大战奶水| 午夜爽爽爽男女污污污网站| 欧美成人免费观看在线看| 国产又爽又黄无码无遮挡在线观看 | 亚洲性色成人AV天堂| 日韩人妻无码一区二区三区99| 久久99精品国产麻豆宅宅| 成年丰满熟妇午夜免费视频| 亚洲人成网站色7799| 日韩视频一区二区三区| 久久国产色AV免费看| 丰满熟妇XXXX性久久久| 曰本丰满成熟xxxx精品| 无码内射中文字幕岛国片| 男人吃奶摸下挵进去好爽| 八戒八戒在线WWW观看| 亚洲国产精品无码中文字APP | 亚洲欧洲无码一区二区三区| 日日狠狠久久偷偷四色综合免费| 久久久久精品精品6精品精品 | 又爽又黄又无遮挡网站动态图 | 欧美极品另类ⅤIDEOSDE| 国色天香十七区品质怎么样| 波多野结衣乳巨码无在线| 无码人妻av免费一区二区三区 | 中国少妇内射XXXXⅩHD| 亚洲欧洲AV综合色无码| 亚洲AV无码成人精品网站漏男| 少妇爆乳无码AV无码波霸| 番剧初恋不可能是亲姐姐| 岳女四人共侍一夫婷婷| 妺妺窝人体色www聚色窝仙踪 | 少妇激情一区二区三区视频| 免费人成网站在线观看欧美| 国语做受对白XXXXX在线| 成 年 人 黄 色 大 片大 全| 永久亚洲成A人片777777| 亚洲AⅤ中文无码字幕色| 日本熟妇色熟妇在线视频播放| 六十路七十路熟女乱码| 韩国青草自慰喷水无码直播间| 大陆少妇XXXX做受| 亚洲AV综合AV一区| 搡老女人ⅩXXX搡老女人电影看| 免费网站正能量WWW正能量| 精东传媒剧国产MV的特点| 国产成人无码A区在线| YY8090福利午夜理论片| 在线观看特色大片免费视频| 亚洲VA中文字幕无码毛片| 四季AV无码专区AV浪潮| 欧美最猛黑人XXXX黑人猛交98| 久久亚洲色WWW成人图片| 黑人精品XXX一区一二区| 国产69成人精品视频免费| www.丁香五月| 岳打开双腿开始配合交换 | 波多野结衣一二三区AV高清| 18禁裸体动漫美女无遮挡网站 | 天天狠天天透天干天干| 群体交乱之放荡娇妻| 美女扒开粉嫩尿口的照片| 国产成人年无码AV片在线观看| FREE嫩白18SEⅩ性HD处| 最新欧美精品一区二区三区| 亚洲性色AV片在线观看网址| 亚洲AV永久精品无码桃色| 无码国产精品一区二区免费16| 色婷婷精品久久二区二区蜜臀av| 欧美又粗又大BBBB疯视频AV| 男女一起差差差差差| 久久天天躁夜夜躁狠狠躁2022| 精产国品一二三产区区别是什么| 国产猛进猛出又黄又爽又色| 国产成年无码V片在线| 成av人片一区二区三区久久| AAA欧美色吧激情视频| 中文字幕AV一区二区三区人妻少| 亚洲一区二区三区无码中文字幕| 亚洲VA成无码人在线观看| 性色AV一区二区三区咪爱四虎| 天天躁日日躁狠狠躁AV中文| 色综合天天无码网站| 日韩VA中文字幕无码电影| 人妻精品久久无码专区涩涩| 欧美日产欧美日产国产精品| 女人扒开的小泬高潮喷水小说| 免费无码又爽又刺激动态图| 美女扒开腿让男人桶爽揉 | 国产精品久久久久国产A级| 国产ΑV在线ΑV天堂AⅤ国产| 粉嫩小泬无遮挡久久久久久|