搜尋
首頁後端開發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
可以在PHP會話中存儲哪些數據?可以在PHP會話中存儲哪些數據?May 02, 2025 am 12:17 AM

phpsessionscanStorestrings,數字,數組和原始物。

您如何開始PHP會話?您如何開始PHP會話?May 02, 2025 am 12:16 AM

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

什麼是會話再生,如何提高安全性?什麼是會話再生,如何提高安全性?May 02, 2025 am 12:15 AM

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

使用PHP會話時有哪些性能考慮?使用PHP會話時有哪些性能考慮?May 02, 2025 am 12:11 AM

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHP會話與Cookie有何不同?PHP會話與Cookie有何不同?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版

SublimeText3 英文版

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

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

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

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器