thinkphp提供了驗(yàn)證器,用于驗(yàn)證請(qǐng)求數(shù)據(jù)。驗(yàn)證器可通過(guò)控制器創(chuàng)建并調(diào)用validate方法,并提供豐富的內(nèi)置驗(yàn)證規(guī)則。自定義規(guī)則可通過(guò)實(shí)現(xiàn)Rule接口實(shí)現(xiàn),必須注冊(cè)后方可使用。驗(yàn)證器支持驗(yàn)證場(chǎng)景,可定義不同的規(guī)則集。驗(yàn)證失敗時(shí),驗(yàn)證器會(huì)返回一個(gè)錯(cuò)誤消息數(shù)組,可通過(guò)getError方法獲取。
ThinkPHP中的驗(yàn)證器
ThinkPHP中內(nèi)置了驗(yàn)證器類,用于對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行驗(yàn)證。驗(yàn)證器是ThinkPHP中數(shù)據(jù)過(guò)濾和驗(yàn)證的關(guān)鍵組件,它提供了豐富的驗(yàn)證規(guī)則和簡(jiǎn)便易用的語(yǔ)法。
如何使用驗(yàn)證器?
要使用驗(yàn)證器,需要在控制器中創(chuàng)建驗(yàn)證器實(shí)例并調(diào)用其validate方法。例如:
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
use thinkValidate; class UserController extends Controller { public function create() { // 創(chuàng)建驗(yàn)證器實(shí)例 $validate = Validate::make(); // 定義驗(yàn)證規(guī)則 $rules = [ 'username' => 'require|max:255', 'email' => 'require|email', 'password' => 'require|min:6' ]; // 驗(yàn)證請(qǐng)求數(shù)據(jù) if (!$validate->check($request->param(), $rules)) { // 驗(yàn)證失敗,返回錯(cuò)誤信息 return $validate->getError(); } // ... 其他代碼 } }
驗(yàn)證規(guī)則
驗(yàn)證器提供了豐富的驗(yàn)證規(guī)則,可以用于對(duì)數(shù)據(jù)進(jìn)行各種驗(yàn)證,如:
自定義驗(yàn)證規(guī)則
除了內(nèi)置的驗(yàn)證規(guī)則之外,還可以自定義驗(yàn)證規(guī)則。自定義驗(yàn)證規(guī)則需要實(shí)現(xiàn)thinkValidateRule接口。例如:
namespace appvalidaterule; use thinkValidateRule; class Phone implements Rule { public function checkValue($value): bool { return preg_match('/^1[34578]d{9}$/', $value); } public function getErrorMessage(): string { return '手機(jī)號(hào)碼格式不正確'; } }
自定義規(guī)則可以在驗(yàn)證器中通過(guò)rule方法進(jìn)行注冊(cè)。例如:
$validate = Validate::make(); $validate->rule('phone', 'appvalidaterulePhone');
驗(yàn)證場(chǎng)景
驗(yàn)證器支持驗(yàn)證場(chǎng)景,允許在一個(gè)驗(yàn)證器中定義不同的驗(yàn)證規(guī)則集。例如:
$validate = Validate::make([ 'rules' => [ 'username' => 'require|max:255', 'email' => 'require|email', 'password' => 'require|min:6' ], 'scenes' => [ 'register' => ['username', 'email', 'password'], 'login' => ['username', 'password'] ] ]);
可以通過(guò)scene方法指定要使用的驗(yàn)證場(chǎng)景。例如:
if (!$validate->check($request->param(), 'register')) { // 驗(yàn)證失敗,返回錯(cuò)誤信息 return $validate->getError(); }
錯(cuò)誤消息
當(dāng)驗(yàn)證失敗時(shí),驗(yàn)證器會(huì)返回一個(gè)錯(cuò)誤消息數(shù)組。錯(cuò)誤消息可以在控制器中使用getError方法獲取。錯(cuò)誤消息默認(rèn)使用內(nèi)置的錯(cuò)誤模板,也可以通過(guò)message方法自定義錯(cuò)誤模板。