亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 59
粉絲 0
評(píng)論 1
訪問(wèn)量 57413
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
實(shí)現(xiàn)獲取器 修改器以及驗(yàn)證器的使用——2018年5月25日作業(yè)
白貓警長(zhǎng)的博客
原創(chuàng)
1106人瀏覽過(guò)


模型中 獲取器的3種用法




<?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)的代碼:

實(shí)例

<?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;
	}


模型中:修改器的兩種用法(model\Staff.php)

 //修改器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ì)新增和更新操作

控制器中:修改器代碼實(shí)例(controller\ModelEdu.php)

//修改器: 先給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 '新增成功';
	}

控制器中:驗(yàn)證器(驗(yàn)證器類、獨(dú)立驗(yàn)證)(controller/Verify.php)

<?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();
	}
}

驗(yàn)證器:創(chuàng)建驗(yàn)證規(guī)則及屬性進(jìn)行配置

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元'
	];
}

批改狀態(tài):未批改

老師批語(yǔ):
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)