PHP開發框架之YII框架學習——碾壓ThinkPHP不是夢

  前  言

JRedu

 程序猿是一種慵懶的生物!能少敲一行代碼,絕對不會多敲一個字符!所以,越來越多的開發框架應運而生,在幫助我們完成功能的同時,極大程度上也幫我們節省了人力物力,而且也提高了系統的安全性能。

 而PHP,號稱“世界上最好用的編程語言”!自然也擁有一大羣的“腦殘粉”,讓諸多的PHP程序猿投入到框架的開發過程中。從衆所周知的ThinkPHP、PHPCMS,到時下流行的YII、Symfony、Laravel、Workerman、CodeIgniter等衆多的框架逐漸成爲大家不可或缺的工具。而這其中,YII框架憑藉其優雅的語法、安全的性能、可重用的代碼、MVC的開發模式等諸多亮點,被越來越多的開發者所採納使用。

 

一 、YII框架簡介

II框架是由美籍華人薛強於2008年開始研發,是一個適用於開發 Web2.0 應用程序的高性能 PHP 框架。經過1年多的研發,與2008123日發佈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

Rroute的縮寫格式爲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下;

②  必須繼承ActiveRecordYII\db\ActiveRecord命名空間下

③ 建立後可操作與活動記錄類同名的表也可以使用靜態tableName方法返回表名

 

十七 、單表查詢

 

 

十八 、單表刪除

 

 

十九 、單標添加數據

 

Tset活動記錄類編寫rules方法

 

二十 、單表修改數據

 

 

二十一 、關聯查詢

首先,新建兩個表的數據模型,即活動記錄;

一對多關係關聯(例如,根據顧客名字查詢訂單):

還可以使用::className()替換到完整類名

爲了提高性能減少ControllerModel的耦合可以將上述方封裝到Model

在控制器中調用方法或者屬性即可

使用屬性調用時需將Model中的方法最後的->all()去掉,因爲當調用一個不存在屬性時,會默認調用__Get()魔術方法,YII框架在這個魔術方法中爲我們自動調用了->all()

 

 

一對一關係關聯(例如,根據訂單中的顧客ID查詢顧客姓名):

Model中編寫方法

 

控制器中調用

使用方法調用需補齊->one();

使用屬性調用,會自動補齊

 

二十二 、關聯查詢性能

關聯結果緩存:

 

解釋第一次調用方法讀取數據會自動執行SQL語句以後再調用就會自動緩存結果不會再執行SQL,可以使用unset()函數讓執行時繼續重新調用最新數據

 

關聯多次查詢

解釋上述代碼會執行一次循環便執行一遍SQL,最後查詢N多次

 

解釋改寫後執行第一行代碼相當於執行兩條SQL語句在循環時不會再執行SQL,性能可以大大的優化

 

 

作者:傑瑞教育
出處:http://www.cnblogs.com/jerehedu/ 
版權聲明:本文版權歸傑瑞教育技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
技術諮詢:JRedu技術交流
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章