相信不少小夥伴和我同樣煩惱,laravel沒有自帶手機號的驗證,每次驗證手機號都要寫正則這類的規則,每次都是repeat yourself!違背了編碼的一個原則,就是Don't repeat yourself!php
因此今天有空就像你們介紹一下laravel5.5的一個新特性,RULE的使用。html
在你使用laravel5.5以後,在php artisan list以後,你會看到laravel
有一個新命令 make:rule, 這個就是新增的。app
這裏咱們自定義一個手機驗證規則php artisan make:rule Mobile函數
回車以後,咱們會在app目錄下看到this
打開裏面的Mobile.php編碼
裏面3個函數,第一個自構函數,第二個passes()是咱們主要業務邏輯處理的地方,第一個鍵名參數,第二個是鍵值參數,第三個函數是錯誤信息提示函數,當passes函數返回false時調用。spa
你能夠自定義你的錯誤提示信息,附上個人自定義驗證代碼code
1 class Mobile implements Rule 2 { 3 private $value; 4 /** 5 * Create a new rule instance. 6 * 7 * @return void 8 */ 9 10 public function __construct() 11 { 12 // 13 } 14 15 /** 16 * Determine if the validation rule passes. 17 * 18 * @param string $attribute 19 * @param mixed $value 20 * @return bool 21 */ 22 public function passes($attribute, $value) 23 { 24 $this->value = $value; 25 $phoneHead = array("128", "134", "135", "136", "137", "138", "139", "147", 26 "150", "151", "152", "157", "158", "159", "182", "183", "184", "187", "188", 27 "130", "131", "132", "145", "155", "156", "173", "175", "176", "185", "186", 28 "133", "153", "180", "181", "189", "170", "171", "177", "178", '199'); 29 30 if(strlen($value) == 11 && is_numeric($value)) { 31 $head = substr($value,0,3); 32 foreach($phoneHead as $getHead) { 33 if($getHead == $head) { 34 return true; 35 } 36 } 37 } 38 return false; 39 } 40 41 /** 42 * Get the validation error message. 43 * 44 * @return string 45 */ 46 public function message() 47 { 48 return "無效的手機號:" . $this->value; 49 } 50 }
是否是很簡單。定義好驗證規則後,使用起來就特別方便啦~~~htm
在request文件中 new Mobile() 就能夠了
不再用寫複雜的正則啦。