PHP的Yii框架入門使用教程
安裝
Yii 的安裝由如下兩步組成:
從 yiiframework.com 下載 Yii 框架。
將 Yii 壓縮包解壓至一個 Web 可訪問的目錄。
Tip|提示: 安裝在 Web 目錄不是必須的,每個 Yii 應(yīng)用都有一個入口腳本,只有它才必須暴露給 Web 用戶。其它 PHP 腳本(包括 Yii)應(yīng)該保護起來不被 Web 訪問,因為它們可能會被黑客利用。
需求
安裝完 Yii 以后你也許想驗證一下你的服務(wù)器是否滿足使用 Yii 的要求,只需瀏覽器中輸入如下網(wǎng)址來訪問需求檢測腳本:
http://hostname/path/to/yii/requirements/index.php
Yii 的最低需求是你的 Web 服務(wù)器支持 PHP 5.1.0 或更高版本。Yii 在 Windows 和 Linux 系統(tǒng)上的 Apache HTTP 服務(wù)器 中測試通過,應(yīng)該在其它支持 PHP 5 的 Web 服務(wù)器和平臺上也工作正常。
建立第一個 Yii 應(yīng)用
為了對 Yii 有個初步認(rèn)識,我們在本節(jié)講述如何建立第一個 Yii 應(yīng)用。我們將使用 yiic (命令行工具)創(chuàng)建一個新的 Yii 應(yīng)用。Gii(強大的基于web的代碼生成器)為特定的任務(wù)完成自動代碼生成。假定 YiiRoot 為 Yii 的安裝目錄,WebRoot 是服務(wù)器的文檔根目錄。
在命令行運行 yiic,如下所示:
% YiiRoot/framework/yiic webapp WebRoot/testdrive
Note|注意: 在 MacOS、Linux 或 Unix 系統(tǒng)中運行 yiic 時,你可能需要修改 yiic 文件的權(quán)限使它能夠運行。此外,也可以這樣運行此工具:
% cd WebRoot % php YiiRoot/framework/yiic.php webapp testdrive
這將在 WebRoot/testdrive 目錄下建立一個最基本的 Yii 應(yīng)用。這個應(yīng)用擁有了大多數(shù) Yii 應(yīng)用所需要的目錄結(jié)構(gòu)。
不用寫一行代碼,我們可以在瀏覽器中訪問如下 URL 來看看我們第一個 Yii 應(yīng)用:
http://hostname/testdrive/index.php
正如我們看到的,這個應(yīng)用包含三個頁面:首頁、聯(lián)系頁、登錄頁。首頁展示一些關(guān)于應(yīng)用和用戶登錄狀態(tài)的信息,聯(lián)系頁顯示一個聯(lián)系表單以便用戶填寫并提交他們的咨詢,登錄頁允許用戶先通過認(rèn)證然后訪問已授權(quán)的內(nèi)容。 查看下列截圖了解更多:





下面的樹圖描述了我們這個應(yīng)用的目錄結(jié)構(gòu)。
testdrive/
index.php Web 應(yīng)用入口腳本文件
index-test.php 功能測試使用的入口腳本文件
assets/ 包含公開的資源文件
css/ 包含 CSS 文件
images/ 包含圖片文件
themes/ 包含應(yīng)用主題
protected/ 包含受保護的應(yīng)用文件
yiic yiic 命令行腳本
yiic.bat Windows 下的 yiic 命令行腳本
yiic.php yiic 命令行 PHP 腳本
commands/ 包含自定義的 'yiic' 命令
shell/ 包含自定義的 'yiic shell' 命令
components/ 包含可重用的用戶組件
Controller.php 所有控制器類的基礎(chǔ)類
Identity.php 用來認(rèn)證的 'Identity' 類
config/ 包含配置文件
console.php 控制臺應(yīng)用配置
main.php Web 應(yīng)用配置
test.php 功能測試使用的配置
controllers/ 包含控制器的類文件
SiteController.php 默認(rèn)控制器的類文件
data/ 包含示例數(shù)據(jù)庫
schema.mysql.sql 示例 MySQL 數(shù)據(jù)庫
schema.sqlite.sql 示例 SQLite 數(shù)據(jù)庫
testdrive.db 示例 SQLite 數(shù)據(jù)庫文件
extensions/ 包含第三方擴展
messages/ 包含翻譯過的消息
models/ 包含模型的類文件
LoginForm.php 'login' 動作的表單模型
ContactForm.php 'contact' 動作的表單模型
runtime/ 包含臨時生成的文件
tests/ 包含測試腳本
views/ 包含控制器的視圖和布局文件
layouts/ 包含布局視圖文件
main.php 所有視圖的默認(rèn)布局
column1.php 使用單列頁面使用的布局
column2.php 使用雙列的頁面使用的布局
site/ 包含 'site' 控制器的視圖文件
pages/ 包含 "靜態(tài)" 頁面
about.php "about" 頁面的視圖
contact.php 'contact' 動作的視圖
error.php 'error' 動作的視圖(顯示外部錯誤)
index.php 'index' 動作的視圖
login.php 'login' 動作的視圖
system/ 包含系統(tǒng)視圖文件
連接到數(shù)據(jù)庫
大多數(shù) Web 應(yīng)用由數(shù)據(jù)庫驅(qū)動,我們的測試應(yīng)用也不例外。要使用數(shù)據(jù)庫,我們首先需要告訴應(yīng)用如何連接它。修改應(yīng)用的配置文件 WebRoot/testdrive/protected/config/main.php 即可,如下所示:
return array( ...... 'components'=>array( ...... 'db'=>array( 'connectionString'=>'sqlite:protected/data/source.db', ), ), ...... );
上面的代碼告訴 Yii 應(yīng)用在需要時將連接到 SQLite 數(shù)據(jù)庫 WebRoot/testdrive/protected/data/testdrive.db 。注意這個SQLite 數(shù)據(jù)庫已經(jīng)包含在我們創(chuàng)建的應(yīng)用框架中。數(shù)據(jù)庫只包含一個名為 tbl_user 的表:
CREATE TABLE tbl_user ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, username VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, email VARCHAR(128) NOT NULL );
若你想要換成一個 MySQL 數(shù)據(jù)庫,你需要導(dǎo)入文件 WebRoot/testdrive/protected/data/schema.mysql.sql 來建立數(shù)據(jù)庫。
Note|注意: 要使用 Yii 的數(shù)據(jù)庫功能,我們需要啟用 PHP 的 PDO 擴展和相應(yīng)的驅(qū)動擴展。對于測試應(yīng)用來說,我們需要啟用 php_pdo 和 php_pdo_sqlite 擴展。
實現(xiàn) CRUD 操作
激動人心的時刻來了。我們想要為剛才建立的 tbl_user 表實現(xiàn) CRUD (create, read, update 和 delete) 操作,這也是實際應(yīng)用中最常見的操作。我們無需麻煩地編寫實際代碼,這里我們將使用 Gii —— 一個強大的基于Web 的代碼生成器。
配置Gii
為了使用 Gii,首先需要編輯文件 WebRoot/testdrive/protected/main.php,這是已知的 應(yīng)用配置 文件:
return array( ...... 'import'=>array( 'application.models.*', 'application.components.*', ), 'modules'=>array( 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'pick up a password here', ), ), );
然后,訪問 URL http://hostname/testdrive/index.php?r=gii。這里我們需要輸入密碼,它是在我們在上面的配置中指定的。
生成 User 模型
登陸后,點擊鏈接 Model Generator。它將顯示下面的模型生成頁面,

在 Table Name 輸入框中,輸入 tbl_user。在 Model Class 輸入框中,輸入 User。然后點擊 Preview 按鈕。這里將展示將要生成的新文件?,F(xiàn)在點擊 Generate 按鈕。一個名為 User.php 將生成到 protected/models 目錄中。如我們稍后描述的, User 模型類允許我們以面向?qū)ο蟮姆绞絹碓L問數(shù)據(jù)表 tbl_user 。
生成 CRUD 代碼
在創(chuàng)建模型類之后,我們將生成執(zhí)行 CRUD 操作的代碼。我們選擇 Gii 中的 Crud Generator,如下所示,

在 Model Class 輸入框中,輸入 User。在 Controller ID 輸入框中,輸入 user (小寫格式)?,F(xiàn)在點擊 Generate 按鈕后的 Preview 按鈕。CRUD 代碼生成完成了。
訪問 CRUD 頁面
讓我們看看成果,訪問如下 URL:
http://hostname/testdrive/index.php?r=user
這會顯示一個 tbl_user 表中記錄的列表。
點擊頁面上的 Create User 鏈接,如果沒有登錄的話我們將被帶到登錄頁。登錄后,我們看到一個可供我們添加新用戶的表單。完成表單并點擊 Create 按鈕,如果有任何輸入錯誤的話,一個友好的錯誤提示將會顯示并阻止我們保存?;氐接脩袅斜眄摚覀儜?yīng)該能看到剛才添加的用戶顯示在列表中。
重復(fù)上述步驟以添加更多用戶。注意,如果一頁顯示的用戶條目太多,列表頁會自動分頁。
如果我們使用 admin/admin 作為管理員登錄,我們可以在如下 URL 查看用戶管理頁:
http://hostname/testdrive/index.php?r=user/admin
這會顯示一個包含用戶條目的漂亮表格。我們可以點擊表頭的單元格來對相應(yīng)的列進(jìn)行排序,而且它和列表頁一樣會自動分頁。
實現(xiàn)所有這些功能不要我們編寫一行代碼!


- PHP的Yii框架的常用日志操作總結(jié)
- 詳解PHP的Yii框架中日志的相關(guān)配置及使用
- 在Mac OS上搭建PHP的Yii框架及相關(guān)測試環(huán)境
- win7安裝php框架Yii的方法
- Nginx配置PHP的Yii與CakePHP框架的rewrite規(guī)則示例
- 實例講解yii2.0在php命令行中運行的步驟
- Yii 連接、修改 MySQL 數(shù)據(jù)庫及phpunit 測試連接
- PHP YII框架開發(fā)小技巧之模型(models)中rules自定義驗證規(guī)則
- PHP Yii框架之表單驗證規(guī)則大全
- PHP基于yii框架實現(xiàn)生成ICO圖標(biāo)
- 列舉PHP的Yii 2框架的開發(fā)優(yōu)勢
- 全面解讀PHP的Yii框架中的日志功能
相關(guān)文章
thinkPHP簡單調(diào)用函數(shù)與類庫的方法
這篇文章主要介紹了thinkPHP簡單調(diào)用函數(shù)與類庫的方法,簡單講述了thinkPHP公共函數(shù)庫的文件位置并結(jié)合實例分析了類庫的調(diào)用方法,需要的朋友可以參考下2017-03-03
php in_array() 檢查數(shù)組中是否存在某個值詳解
php有時候需要判斷某一個值是否存在于數(shù)組中,我們可以直接使用php內(nèi)置函數(shù)in_array()來實現(xiàn)判斷。php in_array 函數(shù)用于檢查數(shù)組中是否存在某個值,如果存在,則返回true,否則返回false。本文章向大家介紹in_array函數(shù)的基本語法及使用實例,感興趣的朋友可以參考一下。2016-11-11
Yii2.0框架模型添加/修改/刪除數(shù)據(jù)操作示例
這篇文章主要介紹了Yii2.0框架模型添加/修改/刪除數(shù)據(jù)操作,結(jié)合實例形式分析了Yii2.0使用模型操作數(shù)據(jù)的添加、修改、刪除相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-07-07
Yii框架ACF(accessController)簡單權(quán)限控制操作示例
這篇文章主要介紹了Yii框架ACF(accessController)簡單權(quán)限控制操作,結(jié)合實例形式分析了Yii框架簡單權(quán)限控制操作參數(shù)設(shè)置與使用技巧,需要的朋友可以參考下2019-04-04
laravel框架實現(xiàn)去掉URL中index.php的方法
今天小編就為大家分享一篇laravel框架實現(xiàn)去掉URL中index.php的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
php中關(guān)于socket的系列函數(shù)總結(jié)
這篇文章主要介紹了php中關(guān)于socket的系列函數(shù)總結(jié),本文列舉了所有關(guān)于PHP語言中使用socket相關(guān)服務(wù)的一些函數(shù),需要的朋友可以參考下2015-05-05

