5個(gè)屬性
1.試圖類實(shí)例對(duì)象:protected $view;
2.請(qǐng)求類實(shí)例對(duì)象:protected $request;
3.驗(yàn)證失敗是否拋出異常:protected $failException=false;
4.是否批量驗(yàn)證:protected $batchValidate=false;
5.前置方法列表:protected $beforeActionList=[];
8個(gè)方法介紹
1.構(gòu)造方法:public function __construct(Request $request = null)
2.初始化方法:protected function _initialize(){}//默認(rèn)為空
3.加載模版:protected function fetch($template = ”, $vars = [], $replace = [], $config = [])
4.渲染內(nèi)容:protected function display($content = ”, $vars = [], $replace = [], $config = [])
5.模版變量賦值:protected function assign($name, $value = ”)
6.初始化模版引擎:protected function engine($engine)
7.驗(yàn)證失敗拋出異常:protected function validateFailException($fail = true)
8.驗(yàn)證數(shù)據(jù):protected function validate($data, $validate, $message = [], $batch = false, $callback = null)
總結(jié):任何學(xué)習(xí)方法嫉到,都替代不了閱讀源代碼然遏。閱讀源代碼矾瘾,不僅可以了解作者的編程思路台谊,還可以學(xué)到很多編程技巧肛响,是一種有效的學(xué)習(xí)方式。
什么是控制器嘿悬?什么是可訪問控制器副硅?
application下的index模塊下controller中的文件。
什么是操作爸业?什么是可訪問操作其骄?
控制器中的方法。
public function 方法是可訪問操作扯旷。
什么是命名空間拯爽?它與控制器或方法后綴的關(guān)系?
3個(gè)預(yù)置跟命名空間:application钧忽,think毯炮,traits。
命名空間:namespace app\index\controller;//類名=根空間+子空間(可選)+類名
5.0版本因?yàn)橛辛嗣臻g耸黑,所以不用加后綴桃煎,如果加上控制器加上后綴:可以防止類名和關(guān)鍵字沖突。
控制器的命名規(guī)范是什么崎坊?如何正確訪問控制器备禀?
UserLogin.php類訪問:協(xié)議+模塊+user_login+方法,輸入的url中大寫字母全部會(huì)自動(dòng)轉(zhuǎn)化為小寫洲拇。
為什么要自定義訪問控制器層奈揍?
為了項(xiàng)目規(guī)范。
為什么要?jiǎng)?chuàng)建多級(jí)控制器赋续?
分級(jí)管理男翰。
為什么要?jiǎng)?chuàng)建空操作和控制器?
對(duì)不存在的訪問的url進(jìn)行攔截纽乱。
在控制器中使用trait有什么好處蛾绎?
可以使用基于基類的方法。
什么是單一模塊?什么時(shí)候需要使用它?
// 是否支持多模塊‘a(chǎn)pp_multi_module’ => false,
使用單一模塊租冠,多級(jí)控制器完成網(wǎng)站前后端規(guī)劃鹏倘。
總結(jié):控制器的分級(jí)管理使項(xiàng)目邏輯更加清晰,空操作與空操作器使控制器具備了容錯(cuò)機(jī)制顽爹,trait的引入纤泵,使控制器可從多個(gè)trait類中繼承方法集,橫向擴(kuò)展了控制器的功能镜粤。
公共操作有什么用捏题?如何創(chuàng)建公共操作?
構(gòu)造方法創(chuàng)建公共操作肉渴,解決了操作共享數(shù)據(jù)的問題公荧。
公共控制器類有什么用?如何創(chuàng)建公共控制器同规?
控制器的公共操作來解決了類中數(shù)據(jù)共享以及屬性初始化的問題循狰。公共控制器,從控制器層面上捻浦,解決了控制器類之間的屬性和方法的共享問題晤揣。這是二個(gè)層面上的抽象,也是非常實(shí)用的技術(shù)朱灿。
什么是前置操作昧识?
第一步:創(chuàng)建前置操作方法;
第二步:配置前置操作列表盗扒。
為什么必須繼承基類Controller跪楞,才能創(chuàng)建前置操作?
用到基類中的前置操作方法侣灶。
前置操作有什么用甸祭?如何正確的使用它?
在之前的版本中褥影,除了前置操作池户,還有后置操作,不過在ThinkPHP5中凡怎,已經(jīng)取消了同雞肋的后置操作校焦。關(guān)于前置操作,可以想象成全部或部分方法的構(gòu)造函數(shù)统倒。其目的寨典,是為了項(xiàng)目規(guī)范,易維護(hù)房匆,好發(fā)展耸成。
頁面跳轉(zhuǎn)與重定向
1.頁面跳轉(zhuǎn)的目標(biāo)有哪些报亩?
調(diào)用方法:$this->success(‘提示’,’地址’) $this->error(‘提示’,’地址’)
1)當(dāng)前控制器 2)跨控制器 3)跨模塊 4)外部地址
2.如何設(shè)置URL訪問重定向?
調(diào)用方法:$this->redirect(‘路由地址’,[變量列表],”,’域名開關(guān)’)
1)站內(nèi)地址 2)外部地址
請(qǐng)求對(duì)象與參數(shù)綁定
1.請(qǐng)求變量與請(qǐng)求對(duì)象的關(guān)系井氢?
2.請(qǐng)求信息包括哪些弦追?
3.如果通過參數(shù)綁定來簡(jiǎn)化請(qǐng)求的URL地址?
總結(jié):用戶對(duì)所有網(wǎng)絡(luò)資源的訪問花竞,都要通過請(qǐng)求對(duì)象骗卜,以URL為載體進(jìn)行訪問。用戶需求的個(gè)性化是通過請(qǐng)求變量來體現(xiàn)左胞。
屬性注入與方法注入
1.屬性注入:\think\Request::instance()->屬性
2.方法注入:\think\Request::hook(‘方法’寇仓,’對(duì)應(yīng)函數(shù)’)
作用:給當(dāng)前請(qǐng)求對(duì)象綁定屬性和方法,請(qǐng)求對(duì)象在應(yīng)用的整個(gè)生命周期內(nèi)都有效的烤宙,不僅可以被當(dāng)前所有控制器方法所共享遍烦,還可以跨控制器和模塊進(jìn)行調(diào)用。
總結(jié):請(qǐng)求對(duì)象的屬性與方法注入躺枕,不僅可以擴(kuò)展請(qǐng)求對(duì)象的功能服猪,實(shí)現(xiàn)在整個(gè)應(yīng)用周期的信息共享,而且它還為自定義請(qǐng)求的行為制定了標(biāo)準(zhǔn)拐云。
請(qǐng)求對(duì)象依賴注入
1.依賴注入:改變了使用對(duì)象前罢猪,必須線創(chuàng)建對(duì)象的傳統(tǒng)方式,而是從外部注入所依賴的對(duì)象叉瘩;
2.Thinkphp5中依賴注入主要是指把對(duì)象注入到可訪問控制器膳帕;
3.注入方式:控制器的構(gòu)造方法和操作方法;
4.實(shí)現(xiàn)方式:對(duì)參數(shù)盡享兌現(xiàn)該類型約束則會(huì)自動(dòng)觸發(fā)依賴注入薇缅,自動(dòng)實(shí)例話該對(duì)象危彩。
總結(jié):訪問控制器的依賴注入,極大了方便了在操作中使用請(qǐng)求對(duì)象泳桦,它不需要依賴與控制器基類汤徽,也不需要倒入請(qǐng)求累命名空間,是一種高效的獲取請(qǐng)求對(duì)象方式灸撰。
ThinkPHP控制器(原文地址)
結(jié)束谒府。
你們的支持也是我前進(jìn)的動(dòng)力,非常感謝支持浮毯!