批改狀態(tài):未批改
老師批語(yǔ):
<?php namespace app\index\model; use think\Model; //使用軟刪除功能,必須先導(dǎo)入model/concern/SoftDelete.php use think\model\concern\SoftDelete; //實(shí)際上一個(gè)trait方法集 class Staff extends Model { use SoftDelete; //獲取器 protected function getSexAttr($value) { $staff = [0=>'男', 1=>'女']; return '性別:'.$staff[$value]; } //獲取器2 protected function getSalaryAttr($value,$data) { return $data['name'].'3月份參考工資:'.($value+200).'元'; } //獲取器3: 可以為表中不存在的字段設(shè)置獲取器方法,純粹為了拼裝字段內(nèi)容 protected function getStaffInfoAttr($value, $data) { //其實(shí)$value此時(shí)僅是一個(gè)占位符,可任意命名,無(wú)任何意義 return '我叫:'.$data['name'].',今年'.$data['age'].'歲,每月工資:'.$data['salary'].'元'; }
控制器實(shí)現(xiàn)的代碼:
<?php namespace app\index\controller; use think\Controller; use app\index\model\Staff; class ModelEdu extends Controller { //獲取器 public function gain() { $res = staff::get(1); // dump($res); echo $res->getData('sex'), '<br>'; echo $res->salary, '<br>'; echo $res->sex, '<br>'; echo $res->staff_info; }
//修改器1:將入職時(shí)間自動(dòng)轉(zhuǎn)為時(shí)間戳存儲(chǔ) protected function setEntryTimeAttr($value) { return strtotime($value); } //修改器2:支持傳入第二個(gè)參數(shù),引用其它字段的值 protected function setSalaryAttr($value, $data) { //salary字段存入表中時(shí),自動(dòng)加上員工的年齡,純粹演示,無(wú)實(shí)際意義 return $value+$data['age']; //模型實(shí)現(xiàn)原理,在控制器輸入工資5000,比如年齡是35,則工資5035 } //類型轉(zhuǎn)換 protected $type = [ 'staff_id' => 'interger', 'sex' => 'interger', 'age' => 'interger', 'salary' => 'interger' ]; //自動(dòng)完成:主要針對(duì)新增操作,更新操作 //相當(dāng)于給字段設(shè)置默認(rèn)值 // protected $inser = ['sex'=>0,'salary'=>1500]; //針對(duì)新增操作:當(dāng)用戶新增一條記錄時(shí),sex和salary就是默認(rèn)值 // protected $update = ['sex'=>0]; //針對(duì)更新操作:當(dāng)用戶更新一條記錄時(shí),sex就是默認(rèn)值 protected $auto = ['sex'=>0,'salary'=>1500]; //同時(shí)針對(duì)新增和更新操作
//修改器: 先給staff表新增一個(gè)字段entry_time: 入職時(shí)間 public function modify() { // $res = Staff::get(5); // $res->entry_time = '2017-5-22'; //入職時(shí)間 // $res->save(); $res = Staff::get(3); $res->salary = 9900; //修改工資 $res->save(); return '修改成功'; } //自動(dòng)完成: public function auto() { Staff::create(['name'=>'趙麗穎','age'=>32]); return '新增成功'; }
<?php namespace app\index\controller; use think\Controller; use think\Validate; use app\validate\Staff; //導(dǎo)入驗(yàn)證器 class Verify extends Controller { //驗(yàn)證器: 直接實(shí)例化驗(yàn)證器完成驗(yàn)證 public function Demo1() { //準(zhǔn)備要驗(yàn)證的數(shù)據(jù)(字段) $data=[ 'name' => 'PHP中文網(wǎng)', 'sex' => 0, 'age' => 20, 'salary' => 8000 ]; $validate = new Staff(); //實(shí)例化 if(!$validate->check($data)) { //判斷 dump($validate->getError()); }else{ return '驗(yàn)證通過(guò)'; } } //驗(yàn)證器: 使用控制器內(nèi)容的驗(yàn)證對(duì)象來(lái)完成驗(yàn)證: $this->validate($data, $rule) public function Demo2() { //1. 準(zhǔn)備要驗(yàn)證的數(shù)據(jù)(字段) // $data=[ // 'name' => 'PHP中文網(wǎng)', // 'sex' => 0, // 'age' => 20, // 'salary' => 8000 // ]; // //準(zhǔn)備一下驗(yàn)證規(guī)則 // $rule = 'app\Validate\Staff'; // $res = $this->validate($data,$rule); //2. 也可以直接在控制器中進(jìn)行驗(yàn)證 $data = ['age' => 35]; //數(shù)據(jù)輸出 $rule = ['age' => 'between:10,50']; //驗(yàn)證年齡的范圍,大于或小于當(dāng)前值就會(huì)觸發(fā)下面的錯(cuò)誤提示信息 $mess = ['age.between' => '年齡必須在10至50之間']; $res = $this->validate($data,$rule,$mess); if(true !== $res) { //驗(yàn)證成功返回true,否則返回錯(cuò)誤信息 return $res; } return '驗(yàn)證通過(guò)'; } //獨(dú)立驗(yàn)證:直接實(shí)例化think\Validate.php進(jìn)行驗(yàn)證 public function Demo3() { //主要是通過(guò)Validate::make()和check()進(jìn)行驗(yàn)證 //make($rule,$mess):創(chuàng)建驗(yàn)證規(guī)則與錯(cuò)誤信息 //check($data)完成數(shù)據(jù)驗(yàn)證 //1.創(chuàng)建驗(yàn)證規(guī)則 $rule = ['age' => 'require|between:18,60']; //2.創(chuàng)建錯(cuò)誤信息 $mess = [ 'age.requeire' => '年齡必須填寫(xiě)', 'age.between' => '年齡必須在18至60之間' ]; //3.創(chuàng)建數(shù)據(jù) $data = ['age' => 33]; //初始化驗(yàn)證器類,并返回驗(yàn)證器實(shí)例 $validate = Validate::make($rule, $mess); $res = $validate->check($data); return $res ? '驗(yàn)證成功' : $validate->getError(); } }
Validate/Staff.php
<?php namespace app\validate; use think\Validate; class Staff extends Validate { //創(chuàng)建驗(yàn)證規(guī)則 //以屬性的方式進(jìn)行配置,屬性不能更改 protected $rule = [ 'name'=>'require|min:5|max:15', //最少5,最大15 'sex' => 'in:0,1', 'age' => 'require|between:18,60', 'salary' => 'require|gt: 1500' ]; //錯(cuò)誤信息可以自定義: protected $message = [ 'name.require' => '姓名不能為空', 'name.min' => '姓名不能少于5個(gè)字符', 'name.max' => '姓名不能大于15個(gè)字符', 'sex.in' => '請(qǐng)選擇性別', 'age.require' => '年齡必須輸入', 'age.between' => '年齡必須在18到60周歲之間', 'salary.require' => '工資必須輸入', 'salary.gt' => '工資必須大于3000元' ]; }
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)