前 言
JRedu
程序猿是一種慵懶的生物!能少敲一行代碼,絕對不會多敲一個字符!所以,越來越多的開發框架應運而生,在幫助我們完成功能的同時,極大程度上也幫我們節省了人力物力,而且也提高了系統的安全性能。
而PHP,號稱“世界上最好用的編程語言”!自然也擁有一大羣的“腦殘粉”,讓諸多的PHP程序猿投入到框架的開發過程中。從衆所周知的ThinkPHP、PHPCMS,到時下流行的YII、Symfony、Laravel、Workerman、CodeIgniter等衆多的框架逐漸成爲大家不可或缺的工具。而這其中,YII框架憑藉其優雅的語法、安全的性能、可重用的代碼、MVC的開發模式等諸多亮點,被越來越多的開發者所採納使用。
一 、YII框架簡介
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的啓動安裝
YII框架下載後,直接解壓放到網站的根目錄即可。解壓後目錄結構如下:
下載後,可以首先訪問根目錄中的requirements.php文件,這個文件用於檢測系統是否支持YII框架。注意,YII 2.0要求最低的PHP版本必須是PHP5.4以上。否則驗證不通過。
驗證通過後,可以訪問框架的入口腳本文件:web/index.php ,這是我們唯一可以訪問的一個文件。也是我們網站的主頁面。
注意:訪問前必須配置CookieValidationKey 訪問config/web.php 修改” cookieValidationKey”=>””,修改爲任意字符串即可,否則後續功能將會受限不能使用。
三 、YII請求流程處理
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(); 拿到響應組件
七 、Session 處理
使用\YI::app->session獲取session組件
八 、Cookie 處理
使用\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,性能可以大大的優化
出處:http://www.cnblogs.com/jerehedu/
版權聲明:本文版權歸煙臺傑瑞教育科技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
技術諮詢: