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

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根目錄並鍵入以下內容:

<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/createpost是控制器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訪問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
在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。