Yii框架:快速構建高效CRUD應用的指南
Yii是一個高性能的PHP框架,以其速度、安全性以及對Web 2.0應用的良好支持而聞名。它遵循“約定優於配置”的原則,這意味著只要遵循其規範,就能編寫比其他框架少得多的代碼(更少的代碼意味著更少的bug)。此外,Yii還提供了許多開箱即用的便捷功能,例如腳手架、數據訪問對象、主題、訪問控制、緩存等等。本文將介紹使用Yii創建CRUD系統的基礎知識。
關鍵要點
yiic
用於創建具有合適目錄結構的骨架應用。 Yii遵循MVC和OOP原則,URL結構為http://localhost/yiitest/index.php?r=controllerID/actionID
。控制器和要調用的方法是根據URL中的ID確定的。 gii
可用於生成模型、控制器和表單,用於CRUD操作,從而快速開發CRUD系統。例如,用戶可以對博客文章執行CRUD操作的簡單系統可以在幾分鐘內開發完成。 入門
假設您已經在系統上安裝了Apache、PHP(5.1或更高版本)和MySQL,因此第一步是下載框架文件。訪問Yii官方網站並下載最新的穩定版本(本文撰寫時為1.1.13)。解壓ZIP文件以獲取文件夾yii-1.1.13.e9e4a0
(版本標識符可能因您下載的版本而異),將其重命名為yii
,然後將其移動到您的Web可訪問根目錄。在我的系統中,這是C:\wamp\www
,因此框架文件的路徑將為C:\wamp\www\yii
。在本文中,我將其稱為<yiiroot></yiiroot>
,以便即使您的設置不同,您也能輕鬆地跟隨操作。接下來,我們應該檢查Yii的哪些功能將受我們的系統支持。在瀏覽器中訪問http://localhost/yii/requirements/
以查看框架的要求詳細信息。由於我們將使用MySQL數據庫,因此您應該啟用了MYSQL PDO擴展。
我們希望快速檢查Yii的要求,這就是我們將文件放在可訪問目錄中的原因,但建議將Yii文件保存在Web根目錄之外。檢查之後,您可以隨意將其移動到其他位置。
繼續前進
每個Web應用程序都有一個目錄結構,Yii應用程序也需要在Web根目錄內維護分層結構。要使用合適的目錄結構創建骨架應用程序,我們可以使用Yii的命令行工具yiic
。導航到Web根目錄並鍵入以下內容:
<yiiroot>/framework/yiic webapp yiitest
這將創建名為yiitest
的骨架應用程序,其中包含最少必需的文件。在其中,您將找到index.php
,它用作入口腳本;它接受用戶請求並決定哪個控制器應該處理該請求。 Yii基於MVC和OOP原則,因此您應該熟悉這些主題。如果您不熟悉MVC,請閱讀SitePoint系列文章《MVC模式和PHP》,它提供了一個很好的介紹。 Yii URL看起來像http://localhost/yiitest/index.php?r=controllerID/actionID
。例如,在博客系統中,URL可能是http://localhost/yiitest/index.php?r=post/create
。 post
是控制器ID,create
是操作ID。入口腳本根據ID決定要調用哪個控制器和方法。 ID為post
的控制器必須命名為PostController
(ID從類名中去除後綴“Controller”並將第一個字母轉換為小寫)。操作ID是以類似的方式存在的控制器內方法的ID;在PostController
中,將有一個名為actionCreate()
的方法。可能有多個與控制器關聯的視圖,因此我們將視圖文件保存在protected/views/*controllerID*
文件夾中。我們可以在上述目錄中為我們的控制器創建一個名為create.php
的視圖文件,然後只需編寫以下代碼即可將此視圖呈現給用戶:
public function actionCreate() { $this->render('create'); }
如有必要,也可以向視圖傳遞其他數據。操作如下:
$this->render('create', array('data' => $data_item));
在視圖文件中,我們可以通過$data
變量訪問數據。視圖還可以訪問$this
,它指向呈現它的控制器實例。此外,如果您想要用戶友好的URL,可以在protected/config/main.php
中取消註釋以下內容:
'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '<w>/<d>'=>'<controller>/view', '<w>/<w>/<d>'=>'<controller>/<action>', '<w>/<w>'=>'<controller>/<action>', ) )
然後,URL將看起來像http://localhost/yiitest/controllerID/actionID
。
開發CRUD應用程序
現在您已經了解了重要的Yii約定,是時候開始使用CRUD了。在本節中,我們將開發一個簡單的系統,用戶可以在其中對博客文章執行CRUD操作(創建、檢索、更新和刪除)。
步驟1
創建MySQL數據庫yiitest
,並在其中創建一個名為posts
的表。出於本文的目的,該表將只有3列:id、title和content。
CREATE TABLE posts ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100), content TEXT )
打開應用程序的配置文件(protected/config/main.php
)並取消註釋以下內容:
'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=yiitest', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', )
將testdrive
替換為我們的數據庫名稱,即yiitest
。顯然,您還應該提供Yii連接所需的憑據。
步驟2
在Yii中,每個數據庫表都應該有一個對應類型的模型類CActiveRecord
。好處是,我們不必直接處理數據庫表。相反,我們可以使用與表的不同行對應的模型對象。例如,Post
類是posts
表的模型。此類的對象表示來自posts
表的一行,並具有表示列值的屬性。為了快速生成模型,我們將使用Yii的基於Web的工具gii
。此工具可用於生成模型、控制器和表單,用於CRUD操作。要在項目中使用gii
,請在應用程序的配置文件中找到以下內容並取消註釋它並添加密碼。
<yiiroot>/framework/yiic webapp yiitest
然後使用以下URL訪問gii
:http://localhost/yiitest/index.php?r=gii
。如果您使用的是用戶友好的URL,則URL為:http://localhost/yiitest/gii
。單擊“模型生成器”。 gii
將詢問您表名;為表名輸入“posts”,為模型使用名稱“Post”。然後單擊“生成”以創建模型。
檢查protected/models
,您將在其中找到文件Post.php
。
步驟3
現在單擊“CRUD生成器”。將模型名稱輸入為“Post”。控制器ID將自動填充為“post”。這意味著將在PostController.php
名稱下生成一個新的控制器。單擊“生成”。該過程將生成控制器以及用於CRUD操作的幾個視圖文件。
現在您有了一個全新的CRUD應用程序!單擊“立即試用”鏈接進行測試。要管理帖子,您需要以admin/admin
身份登錄。要創建新帖子,您需要訪問http://localhost/yiitest/post/create
,要更新特定帖子,只需將瀏覽器指向http://localhost/yiitest/post/update/postID
即可。同樣,您可以列出所有帖子並刪除其中一些或全部帖子。
結論
在開發Web 2.0項目方面,Yii非常強大。事實上,我們剛剛看到在短短幾分鐘內創建功能齊全的CRUD系統是多麼容易!顯然,Yii可以為您節省大量工作,因為您不必從頭開始。 Yii為我們提供了基礎,我們可以根據需要進行擴展。
(後續的FAQ部分,由於篇幅過長,建議另行整理成單獨的文檔。)
以上是PHP主|在幾分鐘內用yii構建一個CRUD應用程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!