首頁 >後端開發 >php教程 >PHP主|在幾分鐘內用yii構建一個CRUD應用程序

PHP主|在幾分鐘內用yii構建一個CRUD應用程序

Lisa Kudrow
Lisa Kudrow原創
2025-02-23 08:57:10555瀏覽

Yii框架:快速構建高效CRUD應用的指南

Yii是一個高性能的PHP框架,以其速度、安全性以及對Web 2.0應用的良好支持而聞名。它遵循“約定優於配置”的原則,這意味著只要遵循其規範,就能編寫比其他框架少得多的代碼(更少的代碼意味著更少的bug)。此外,Yii還提供了許多開箱即用的便捷功能,例如腳手架、數據訪問對象、主題、訪問控制、緩存等等。本文將介紹使用Yii創建CRUD系統的基礎知識。

關鍵要點

  • Yii是一個高性能框架,適用於Web 2.0應用,提供許多便捷功能,例如腳手架、數據訪問對象、主題、訪問控制和緩存。它遵循約定優於配置的原則,減少代碼量,從而降低bug的可能性。
  • Yii的命令行工具yiic用於創建具有合適目錄結構的骨架應用。 Yii遵循MVC和OOP原則,URL結構為http://localhost/yiitest/index.php?r=controllerID/actionID。控制器和要調用的方法是根據URL中的ID確定的。
  • Yii的基於Web的工具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擴展。

PHP Master | Build a CRUD App with Yii in Minutes

我們希望快速檢查Yii的要求,這就是我們將文件放在可訪問目錄中的原因,但建議將Yii文件保存在Web根目錄之外。檢查之後,您可以隨意將其移動到其他位置。

繼續前進

每個Web應用程序都有一個目錄結構,Yii應用程序也需要在Web根目錄內維護分層結構。要使用合適的目錄結構創建骨架應用程序,我們可以使用Yii的命令行工具yiic。導航到Web根目錄並鍵入以下內容:

<code class="language-bash"><yiiroot>/framework/yiic webapp yiitest</yiiroot></code>

這將創建名為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/createpost是控制器ID,create是操作ID。入口腳本根據ID決定要調用哪個控制器和方法。 ID為post的控制器必須命名為PostController(ID從類名中去除後綴“Controller”並將第一個字母轉換為小寫)。操作ID是以類似的方式存在的控制器內方法的ID;在PostController中,將有一個名為actionCreate()的方法。可能有多個與控制器關聯的視圖,因此我們將視圖文件保存在protected/views/*controllerID*文件夾中。我們可以在上述目錄中為我們的控制器創建一個名為create.php的視圖文件,然後只需編寫以下代碼即可將此視圖呈現給用戶:

<code class="language-php">public function actionCreate()
{
    $this->render('create');
}</code>

如有必要,也可以向視圖傳遞其他數據。操作如下:

<code class="language-php">$this->render('create', array('data' => $data_item));</code>

在視圖文件中,我們可以通過$data變量訪問數據。視圖還可以訪問$this,它指向呈現它的控制器實例。此外,如果您想要用戶友好的URL,可以在protected/config/main.php中取消註釋以下內容:

<code class="language-php">'urlManager'=>array(    
    'urlFormat'=>'path',
    'rules'=>array(
        '<w>/<d>'=>'<controller>/view',
        '<w>/<w>/<d>'=>'<controller>/<action>',
        '<w>/<w>'=>'<controller>/<action>',
    )
)</action></controller></w></w></action></controller></d></w></w></controller></d></w></code>

然後,URL將看起來像http://localhost/yiitest/controllerID/actionID

開發CRUD應用程序

現在您已經了解了重要的Yii約定,是時候開始使用CRUD了。在本節中,我們將開發一個簡單的系統,用戶可以在其中對博客文章執行CRUD操作(創建、檢索、更新和刪除)。

步驟1

創建MySQL數據庫yiitest,並在其中創建一個名為posts的表。出於本文的目的,該表將只有3列:id、title和content。

<code class="language-sql">CREATE TABLE posts (
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(100),
    content TEXT
)</code>

打開應用程序的配置文件(protected/config/main.php)並取消註釋以下內容:

<code class="language-php">'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=yiitest',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
)</code>

testdrive替換為我們的數據庫名稱,即yiitest。顯然,您還應該提供Yii連接所需的憑據。

步驟2

在Yii中,每個數據庫表都應該有一個對應類型的模型類CActiveRecord。好處是,我們不必直接處理數據庫表。相反,我們可以使用與表的不同行對應的模型對象。例如,Post類是posts表的模型。此類的對象表示來自posts表的一行,並具有表示列值的屬性。為了快速生成模型,我們將使用Yii的基於Web的工具gii。此工具可用於生成模型、控制器和表單,用於CRUD操作。要在項目中使用gii,請在應用程序的配置文件中找到以下內容並取消註釋它並添加密碼。

<code class="language-bash"><yiiroot>/framework/yiic webapp yiitest</yiiroot></code>

然後使用以下URL訪問giihttp://localhost/yiitest/index.php?r=gii。如果您使用的是用戶友好的URL,則URL為:http://localhost/yiitest/gii。單擊“模型生成器”。 gii將詢問您表名;為表名輸入“posts”,為模型使用名稱“Post”。然後單擊“生成”以創建模型。

PHP Master | Build a CRUD App with Yii in Minutes

檢查protected/models,您將在其中找到文件Post.php

步驟3

現在單擊“CRUD生成器”。將模型名稱輸入為“Post”。控制器ID將自動填充為“post”。這意味著將在PostController.php名稱下生成一個新的控制器。單擊“生成”。該過程將生成控制器以及用於CRUD操作的幾個視圖文件。

PHP Master | Build a CRUD App with Yii in Minutes

現在您有了一個全新的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn