1. 程式人生 > >PHP開發框架之YII框架學習——碾壓ThinkPHP不是夢

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開發框架。

二 、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()

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,效能可以大大的優化

作者:傑瑞教育
出處: 
傑瑞教育技有限公司和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
技術諮詢:JRedu技術交流

相關推薦

PHP開發框架YII框架學習——ThinkPHP

  前  言 JRedu  程式猿是一種慵懶的生物!能少敲一行程式碼,絕對不會多敲一個字元!所以,越來越多的開發框架應運而生,在幫助我們完成功能的同時,極大程度上也幫我們節省了人力物力,而且也提高了系統的安全效能。  而PHP,號稱“世界上最好用的程式語言”!自然也擁有一大群的“腦殘粉”,讓諸多的PHP程式

PHPYii框架學習總結

Yii 是一個高效能的,適用於開發 WEB2.0 應用的 PHP 框架。 Yii 自帶了豐富的功能 ,包括: 模型-檢視-控制器(MVC)設計模式: Yii在WEB程式設計中採用這一成熟的技術從而可以更好的將邏輯層和表現層分開 與jQuery整合:作為最流

我的開發框架ORM框架

今天我想分享一下我自己的ORM框架,雖然談不是很好,但我個人認為還是蠻好用的,跟大家分享交流一下。 首先說說我對現在主流的ORM框架的一些看法: 優點: 讓程式設計師不再關注資料庫細節,專心在業務邏輯上,程式設計師可以不懂資料庫就可以開發系統。 讓資料庫遷移變的非常方便,如果系統需要更改使用的資料

NET Core應用框架BitAdminCore框架應用篇系列

net EDA clas IE span targe slist target nco BitAdminCore是基於NET Core2.0的後端快速開發框架,本篇主要目標是介紹如何使用框架開發應用。框架的一些特性等。 系列鏈接 BitAdminCore框架應用

PHP開發模式-單例模式

padding new ack span self 元素 ati 靜態 模式 class Db{ private function __construct(){} private static $instance; public static function getIn

PHP開發模式-五分彩程序出售

就是 return 並且 {} 內部 靜態 ceo sta sel class Db{五分彩程序出售(企 娥:217 1793 408)private function construct(){}private static $instance;public static

團隊一致性的PHP開發環境Vagrant

Vagrant 簡介 Vagrant是一個基於Ruby的工具,用於建立和部署虛擬化開發環境。 它的主要意義是讓所有開發人員都使用和線上伺服器一樣的環境,本質上和你新建一個虛擬機器 安裝 # https://www.vagrantup.com/downloads.html # vagrant 下載,

unittest單元測試框架unittest 框架的總結2(八)

unittest 下的屬性 1.Unittest.TestCase:所有測試用例類繼承的基本類 2.Unittest.main():將一個單元測試模組變為可直接執行的測試指令碼 If __name__ == “__main__”: Unittest.main() 3.U

javaEE框架Hibernate框架概述

一.什麼是框架? 框架是軟體的半成品,已經幫你完成了部分功能 把一些不確定的東西,按框架要求,達成相應的功能 二.Hibernate簡介 1.Hibernate是什麼框架? (1)是一個開源的物件關係對映框架 (2)對JDBC進行了非常輕量級的物件封裝 (3

區塊鏈開發語言go語言學習線路指導

問題導讀1.為什麼學習go語言?2.你認為該如何入門go語言?3.你認為go語言需要哪些學習過程

中介軟體增強框架-CaptureFramework框架

本週我們將繼續關注UAVStack的中介軟體增強框架專題(MOF),為大家講解MOF中的CaptureFramework框架。該框架提供統一的資料抓取行為和生成抓取結果能力,實現實時資料採集。 背景 應用服務監控是智慧運維繫統的重要組成部分。在UAV系統中,中介軟體增強框架(MOF)探針提供

php開發日記資料庫連線

今天是第一天來寫這個部落格,最近寫的比較多的就是php與表單互動的例子,那今天就寫一下php連線資料庫和資料表的內容。 我電腦系統是window7,使用的是php整合包appserv2.5.10,最新版到2.6.0使用這個的特點就是輕便,只有php5,mysql,和ap

php開發日記微信開發模式

學php最大的熱情就是在大一的時候接觸微信公眾平臺,第一次玩的時候還是編輯模式,慢慢深入就接觸到開發模式了,今天寫開發模式的接入,這是微信開發的最基礎的。1.首先呢,你必須要有伺服器,不管是新浪雲sae,百度雲bae,阿里雲ace都可以,或者是虛擬空間,雲主機都是可以的,

01 . Go框架Gin框架從入門到熟悉(路由和上傳檔案)

#### Gin框架簡介 > Gin是使用Go/Golang語言實現的HTTP Web框架, 介面簡潔, 效能極高,截止1.4.0版本,包含測試程式碼,僅14K, 其中測試程式碼9K, 也就是說測試原始碼僅5k左右, 具有類似Martini的API, 效能更高-快40倍. ##### Gin特性 `

python web開發flask框架學習(2) 加載模版

模版文件 簡書 nbsp 什麽 blog python 目錄 pan col 上次學習了flask的helloword項目的創建,這次來學習flask項目的模版加載: 第一步:創建一個flask項目 第二步:在項目目錄的templates文件夾下創建一個html文件

學習phpyii框架_對yii的理解

yii版本:yii-basic-app-2.0.12 index.php 中的require(__DIR__ . '/../vendor/autoload.php');的理解:__DIR__魔術常量代

學習PHPyii框架的增刪改查

我所在的工作室由原有的專案,作業就是在裡面新增一個板塊進行練習PHP最基本的增刪改查。 1.新建一個數據庫 由於我在學習以前的框架時就已經建了一個數據庫,對這個庫也比較熟悉,所以還是打算用這個庫了。 資料庫名為db_song,我選擇的表為t_songs(一個歌單),其中包含id(主

php開發框架 yii框架搭建(windows 和Linux)

在Windows下 1 將yii框架解壓到apache下的htdoc文s件夾下 2修改php.ini檔案,將extension=php_pdo_mssql.dll extension=php_mysql.dll extension=php_pdo_mysql.dl前的分號

學習Android Studio開發工具Activity3(框架3)

接上文學習Android Studio開發工具之Activity3(框架2) 本篇介紹Android Studio提供的使用者偏好設定,新建一個Module命名為Prefs,選擇Settings Activity,如圖: 執行的效果如圖: Set

python框架 Tornado 學習筆記(一)

tornado pythontornado 一個簡單的服務器的例子:首先,我們需要安裝 tornado ,安裝比較簡單: pip install tornado 測試安裝是否成功,可以打開python 終端,輸入: import tornado.https