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

小說:紫藤種子成熟是什么時候?作者:乙開開更新時間:2019-05-25字數:90547

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

②??控制器的類名與文件同名,必須放在命名空間中 appcontrollers

③ ?控制器必須繼承Controller,需要use yiiwebController

④ ?控制器中必須包含操作方法,操作需用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文件夾下,建立數據模型

①??活動記錄文件必須在命名空間appmodels下;

②??必須繼承ActiveRecord,YIIdbActiveRecord命名空間下;

③?建立后,可操作與活動記錄類同名的表,也可以使用靜態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技術交流

當前文章:http://www.hfcxdn.com/play/rkqxvm2jer.html

發布時間:2019-05-25 03:22:46

叢生紫薇一般有多高呢? 爬山虎什么時候栽植合適? 5月份能栽植法國冬青嗎? 小葉扶芳藤與大葉扶芳藤難道就真的是葉大葉小的問題嗎? 求購垂柳樹苗 棣棠落葉嗎? 早熟禾可以和哪幾個品種一起混播 黑麥草和地毯草有什么區別? 白三葉種子多久發芽? 地毯草屬于什么季型的草坪?

9公分黃金柳批發基地在哪里? 1.5公分剛竹哪家報價最低? 天津花石榴苗多少錢一顆? 浙江貼梗海棠球價格今年怎么樣? 秋天移栽常春藤成活率怎么樣?  沭陽連翹瘋狂搶購中,價格就是瘋狂的源頭哦! 湖北適合種植狼尾草嗎? 包衣薄荷種子多少錢一斤? 浙江適合種植荷蘭菊嗎? 新疆哪里有賣香樟樹種子的? 云南適合種植棕櫚嗎?

編輯:乙華鄧

我要說兩句: (0人參與)

發布
捕鱼达人之深海狩猎