前 言php
JRedugit
程序猿是一種慵懶的生物!能少敲一行代碼,絕對不會多敲一個字符!因此,愈來愈多的開發框架應運而生,在幫助咱們完成功能的同時,極大程度上也幫咱們節省了人力物力,並且也提升了系統的安全性能。github
而PHP,號稱「世界上最好用的編程語言」!天然也擁有一大羣的「腦殘粉」,讓諸多的PHP程序猿投入到框架的開發過程當中。從衆所周知的ThinkPHP、PHPCMS,到時下流行的YII、Symfony、Laravel、Workerman、CodeIgniter等衆多的框架逐漸成爲你們不可或缺的工具。而這其中,YII框架憑藉其優雅的語法、安全的性能、可重用的代碼、MVC的開發模式等諸多亮點,被愈來愈多的開發者所採納使用。web
II框架是由美籍華人薛強於2008年開始研發,是一個適用於開發 Web2.0 應用程序的高性能 PHP 框架。通過1年多的研發,與2008年12月3日發佈YII 1.0版本,發佈後深受廣大開發者所喜好。編程
而中國是 Yii 全球第三大市場,,小米等企業在開發 PHP 時首選 Yii 框架。目前,YII的最新版本是YII 2.0.12,在 PHP 5.4.0 版本以上徹底重寫了 Yii,而且徹底兼容 PHP 7.x。它的目的是成爲一個最早進的新一代的PHP開發框架。緩存
下載地址可從GitHub獲取:https://github.com/yiisoft/yii2/releases/download/2.0.12/yii-basic-app-2.0.12.tgz (小瑞實測,下載緩慢! 若是須要能夠評論留言 哦~)安全
YII框架下載後,直接解壓放到網站的根目錄便可。解壓後目錄結構以下:yii2
下載後,能夠首先訪問根目錄中的requirements.php文件,這個文件用於檢測系統是否支持YII框架。注意,YII 2.0要求最低的PHP版本必須是PHP5.4以上。不然驗證不經過。cookie
驗證經過後,能夠訪問框架的入口腳本文件:web/index.php ,這是咱們惟一能夠訪問的一個文件。也是咱們網站的主頁面。session
注意:訪問前必須配置CookieValidationKey 訪問config/web.php 修改」 cookieValidationKey」=>」」,修改成任意字符串便可,不然後續功能將會受限不能使用。
YII系統的訪問從入口腳本文件開始,通過默認的控制器,由控制器決定讀取哪一個模型,加載哪一個模塊或應用組件,顯示哪一個視圖。 也就是說,控制器的代碼將是咱們操做的核心部分。
YII應用的結構示意圖以下,你們能夠適當參考:
YII應用的靜態結構
位置:controllers/ 下能夠新建控制器
① 新建的控制器必須以Controller結尾,例如HelloControler.php
② 控制器的類名與文件同名,必須放在命名空間中 app\controllers
③ 控制器必須繼承Controller類,須要use yii\web\Controller
④ 控制器中必須包含操做方法,操做需用action開頭,例如 actionIndex()
控制器訪問方式 http://localhost/web/index.php?r=hello/index
R是route的縮寫,格式爲r=控制器名/操做名
Url中能夠在操做名後使用&傳遞其餘參數 例如 ….index.php?r=hello/index&id=3
在控制器中,可使用request請求組件,讀取傳遞到控制器的值;
使用方式: \YII::app->request(); 拿到request請求組件,注意YII是全局類須要加\
拿到request請求組件使用get()/post()/isGet/isPost等方法和屬性。
使用\YII::app->response(); 拿到響應組件
使用\YI::app->session獲取session組件
使用\Yii::app->response->cookies; 拿到Cookie組件
Cookie數據會使用上述提到的config/web.php 中的」 cookieValidationKey」進行加密
視圖文件須要創建在views文件夾中,幷包含在與控制器同名的文件夾名字中:
控制器中加載視圖文件:
$this->renderPartial(「視圖文件名」); 不會加載佈局文件;
$this->render(「視圖文件名」); 會加載默認的佈局文件;
控制器中傳遞數據:
視圖中接收數據:
佈局文件建立在: views/layouts/文件夾下
控制器寫法:
佈局文件載入:
在index視圖中載入about視圖,並向about視圖傳參:
在about視圖中接收參數:
視圖中,定義數據塊:
在config中修改db.php文件修改數據塊配置
在models文件夾下,創建數據模型
① 活動記錄文件必須在命名空間app\models下;
② 必須繼承ActiveRecord類,在YII\db\ActiveRecord命名空間下;
③ 創建後,可操做與活動記錄類同名的表,也可使用靜態tableName方法返回表名
Tset活動記錄類編寫rules方法
首先,新建兩個表的數據模型,即活動記錄;
一對多關係關聯(例如,根據顧客名字查詢訂單):
還可使用::className()替換到完整類名
爲了提升性能,減小Controller與Model的耦合,能夠將上述方封裝到Model中:
在控制器中,調用方法或者屬性便可:
注:使用屬性調用時,需將Model中的方法最後的->all()去掉,由於當調用一個不存在屬性時,會默認調用__Get()魔術方法,YII框架在這個魔術方法中爲咱們自動調用了->all()
一對一關係關聯(例如,根據訂單中的顧客ID查詢顧客姓名):
Model中編寫方法:
控制器中調用:
使用方法調用需補齊->one();
使用屬性調用,會自動補齊
關聯結果緩存:
解釋:第一次調用方法讀取數據,會自動執行SQL語句,之後再調用就會自動緩存結果不會再執行SQL,可使用unset()函數,讓執行時繼續從新調用最新數據;
關聯屢次查詢
解釋:上述代碼會執行一次循環便執行一遍SQL,最後查詢N屢次;
解釋:改寫後執行第一行代碼,至關於執行兩條SQL語句,在循環時不會再執行SQL,性能能夠大大的優化