搜尋
首頁後端開發php教程選擇YII 2框架的7個理由

選擇YII 2框架的7個理由

去年年底,SitePoint發表了一篇文章,重點介紹了頂級PHP框架。並列第四個位置是YII(發音為 yee

)框架。當時,可用的最新版本為1.1.14。最近,YII 2.0可用,因此您可以開始在生產中使用它。 > >當我們最近在RC狀態處於RC狀態時確實介紹了它,但它剛剛達到了完整的發布狀態,我們覺得是時候以某些原因來重新訪問該主題。 鑰匙要點

> yii 2框架很容易安裝,使用Composer處理的直接安裝和配置過程節省了開發人員的時間。

>該框架利用現代技術,作為純OOP框架運行,並利用高級PHP功能,例如晚期靜態綁定,SPL類和接口和匿名功能。
    yii 2是高度擴展的,幾乎可以自定義框架的每個組件以滿足特定的需求。
  • >該框架鼓勵測試,與編碼療法緊密整合,一個PHP測試框架,簡化了創建單元,功能和接受測試的過程。
  • yii 2用其安全應用程序組件簡化了安全性,該組件公開了幾種方法來幫助創建安全應用程序。它還包括用於用戶身份驗證和授權的現成類。
  • >
  • 1。易於安裝
  • 對於網絡開發人員來說,時間是金錢,沒有人願意將寶貴的時間花在復雜的安裝和配置過程上。
  • >使用作曲家處理安裝。如果您想對安裝過程進行描述,SitePoint最近在此處發表了一篇很棒的文章。即使我的網站具有單獨的前端和後端組件,我也傾向於使用基本的應用模板。相反,我選擇在我的站點的後端部分使用一個模塊。 (最好將YII模塊描述為位於主要應用程序內的迷你應用程序)。
  • >
  • >
note

:以後示例中的許多目錄參考使用簡單模板中的目錄結構。

2。利用現代技術

YII是一個純粹的OOP框架,並利用了PHP的一些更高級功能,包括晚期靜態綁定,SPL類和接口和匿名功能。

>所有類都是命名的,這使您可以利用其兼容PSR-4的自動加載器。這意味著,包括YII的HTML助手類包括:>

> yii還允許您定義別名以幫助簡化您的名稱空間。在上面的示例中,該使用語句將加載一個類定義,該類別默認位於目錄/供應商/yiisoft/yii2/helpers中。 該別名在第79行的基本級課程中定義
<span>use yii<span>\helpers\Html</span>;</span>

>框架本身是使用作曲家以及其擴展名安裝的。甚至發布擴展的過程也很容易,就像創建自己的作曲家。

3。高度擴展

yii就像一件外觀,看起來很棒,但也很容易量身定制以滿足您的需求。實際上,框架的每個組件都是可擴展的。一個簡單的例子是在您的觀點中增加了獨特的身體ID。 (如果您有興趣知道為什麼要這樣做,請看一下這篇文章)。

首先,我將在我的appComponents目錄中創建一個使用name viev.php的文件,然後添加以下內容:

>

然後,在我的主佈局文件(appviewslayoutsmain.php)中,我將以下內容添加到我的html的主體標籤中:

<span>public static $aliases = ['@yii' => __DIR__];</span>

>最後,我將以下內容添加到我的主要配置文件中,以便讓yii知道使用我的擴展視圖類,而不是其自己的默認值:

<span>namespace app<span>\components</span>;
</span>
<span>class View extends yii<span>\web\View</span> {
</span>
    <span>public $bodyId;
</span>
    <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */
</span>
    <span>public function getBodyIdAttribute() {
</span>        <span>return ($this->bodyId != '') ? '' : '';
</span>    <span>}
</span>
<span>}</span>

4。鼓勵測試

<span><span><span> <span><span>=$this->BodyIdAttribute?></span></span>></span></span></span>
YII與編碼療法緊密地集成在一起。 CodeCeption是一個很好的PHP測試框架,可幫助簡化為應用程序創建單元,功能和接受測試的過程。因為您正在為所有應用程序編寫自動測試,對嗎?

使用此配置,以下情況將發生:

<span>return [
</span>    <span>// ...
</span>    <span>'components' => [
</span>        <span>// ...
</span>        <span>'view' => [
</span>            <span>'class' => 'app\components\View'
</span>        <span>]   
</span>    <span>]
</span><span>];</span>
>在您的功能和接受測試期間發送的任何電子郵件都會寫入文件而不是發送。

測試中的URL將採用格式index.php/Controller/Action而不是/Controller/Action

    您的測試將使用您的測試數據庫,而不是您的生產數據庫。
  1. > YII框架的特殊模塊也內部也存在。它為TestGuy類添加了幾種方法,這些方法可幫助您在功能測試中使用主動記錄(YII ORM)。例如,如果您想查看使用用戶名“ testuser”成功創建了新用戶的註冊表格,則可以執行以下操作:
  2. 5。簡化了安全性
安全性是任何Web應用程序的關鍵部分,幸運的是,YII具有一些很棒的功能來幫助您減輕您的思維。

YII帶有一個安全應用程序組件,該組件揭示了幾種方法,以幫助創建更安全的應用程序。一些更有用的方法是:

  • 生成Passwordhash:從密碼和隨機鹽中生成安全的哈希。此方法為您製作一個隨機鹽,然後使用PHP的crypt功能從提供的字符串中創建一個哈希。
  • > ValidatePassword:這是生成Passwordhash的伴奏函數,並允許您檢查用戶提供的密碼是否匹配您存儲的哈希。
  • generaterandomkey:允許您創建任何長度的隨機字符串
  • 在所有不安全的HTTP請求方法(put,post,post,delete)上,
yii自動檢查有效的CSRF令牌,並在使用activeform :: begin Form(begin Form(:begin)方法創建打開表單標籤時,將生成並輸出令牌。可以通過編輯主配置文件來禁用此功能以包含以下內容:

>

為了保護XSS,YII提供了另一個稱為HTMLPurifier的幫助者類。該類具有一個名為“進程”的單個靜態方法,並將使用同名流行的過濾器庫過濾您的輸出。
<span>use yii<span>\helpers\Html</span>;</span>

yii還包括用於用戶身份驗證和授權的現成類。授權分為兩種類型:ACF(訪問控製過濾器)和RBAC(基於角色的訪問控制)。

兩者的簡單是ACF,可以通過在控制器的行為方法中添加以下以下方法來實現:

>前面的代碼告訴DefaultControllerTo允許訪客用戶訪問登錄名並查看操作,但不能訪問Create Action。 (?是針對匿名用戶的別名, @是指身份驗證的用戶)。

> RBAC是一種更強大的方法,可以指定用戶可以在整個應用程序中執行特定操作。它涉及為您的用戶創建角色,為您的應用程序定義權限,然後為其預期的角色啟用這些權限。如果您想創建主持人角色,並且允許分配給此角色的所有用戶批准文章,則可以使用此方法。
<span>public static $aliases = ['@yii' => __DIR__];</span>

>您還可以使用RBAC定義規則,RBAC允許您在特定條件下授予對應用程序某些方面的訪問權限。例如,您可以創建一個規則,該規則允許用戶編輯自己的文章,而不是由他人創建的文章。

6。縮短開發時間

大多數項目都涉及一定數量的重複任務,這些任務沒有人浪費時間。 YII為我們提供了一些工具,可以幫助您更少的時間在這些任務上,並有更多的時間自定義您的應用程序以適應客戶的需求。

這些工具中最強大的工具之一稱為“ GII”。 GII是一種基於Web的代碼腳手架工具,它允許您快速創建代碼模板:>

>模型

控制器

表格

    模塊
  • 擴展
  • > CRUD控制器動作和視圖
  • GII高度可配置。您可以將其設置為僅在某些環境中加載。只需按以下方式編輯Web配置文件:
  • <span>use yii<span>\helpers\Html</span>;</span>

    這可以確保GII只有在將YII環境變量設置為>開發>時才加載,並且只有在通過Localhost訪問時才加載。

    現在讓我們看一下模型生成器:

    選擇YII 2框架的7個理由

    >該表名稱使用打字機窗口小部件來猜測您的模型與哪個表相關聯,並且所有字段都有一個翻轉工具提示,以提醒您如何填寫它們。您可以在要求GII生成它之前預覽代碼,並且所有代碼模板都是完全可自定義的。

    >還有幾種命令行工具可幫助創建用於數據庫遷移,消息翻譯(I18N)和數據庫固定裝置的代碼模板,以進行自動測試。例如,您可以使用此命令創建一個新的數據庫遷移文件:

    這將在{appdir}/遷移中創建一個新的遷移模板,該模板看起來像這樣:

    >
    <span>public static $aliases = ['@yii' => __DIR__];</span>

    >所以我想在此表中添加幾列。我只需將以下內容添加到UP方法:

    >
    <span>namespace app<span>\components</span>;
    </span>
    <span>class View extends yii<span>\web\View</span> {
    </span>
        <span>public $bodyId;
    </span>
        <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */
    </span>
        <span>public function getBodyIdAttribute() {
    </span>        <span>return ($this->bodyId != '') ? '' : '';
    </span>    <span>}
    </span>
    <span>}</span>

    ,然後確保我可以扭轉遷移,我將編輯下調方法:>

    <span><span><span> <span><span>=$this->BodyIdAttribute?></span></span>></span></span></span>
    創建表僅涉及在命令行上運行命令:>

    並刪除表:
    <span>return [
    </span>    <span>// ...
    </span>    <span>'components' => [
    </span>        <span>// ...
    </span>        <span>'view' => [
    </span>            <span>'class' => 'app\components\View'
    </span>        <span>]   
    </span>    <span>]
    </span><span>];</span>

    7。易於調整以獲得更好的性能
    <span>return [
    </span>    <span>'components' => [
    </span>        <span>'mail' => [
    </span>            <span>'useFileTransport' => true,
    </span>        <span>],
    </span>        <span>'urlManager' => [
    </span>            <span>'showScriptName' => true,
    </span>        <span>],
    </span>        <span>'db' => [
    </span>                <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test',
    </span>        <span>],
    </span>    <span>],
    </span><span>];</span>

    >每個人都知道一個慢速的網站會創建不滿的用戶,因此yii為您提供了幾種工具,可以幫助您擠出更快的速度。

    <span>$I->amOnPage('register');
    </span><span>$I->fillField('username', 'testuser');
    </span><span>$I->fillField('password', 'qwerty');
    </span><span>$I->click('Register');
    </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>
    >所有YII的緩存組件從YII/緩存/緩存延伸,它使您可以在使用常見API時選擇所需的任何緩存系統。您甚至可以同時註冊多個緩存組件。 YII當前支持數據庫和文件系統緩存,以及APC,memcache,redis,wincache,Xcache和Zend Data Cache。

    默認情況下,如果您使用的是活動記錄,則YII會運行額外的查詢,以確定生成模型所涉及的表格架構。您可以通過編輯主配置文件來設置應用程序來緩存這些架構:

    >

    >最後,YII有一個命令行工具來促進前端資產的縮小。只需運行以下命令即可生成配置模板:

    然後編輯配置以指定您要執行的縮小工具(例如,閉合編譯器,YUI壓縮機或uglifyjs)。生成的配置模板將看起來像這樣:

    >
    <span>return [
    </span>        <span>'components' => [
    </span>            <span>'request' => [
    </span>                <span>'enableCsrfValidation' => false,
    </span>            <span>]
    </span>    <span>];</span>

    接下來,運行此控制台命令以執行壓縮。

    <span>use yii<span>\filters\AccessControl</span>;
    </span>
    <span>class DefaultController extends Controller {
    </span>    <span>// ...
    </span>    <span>public function behaviors() {
    </span>        <span>return [
    </span>            <span>// ...
    </span>            <span>'class' => AccessControl<span>::</span>className(),
    </span>            <span>'only' => ['create', 'login', 'view'],
    </span>                <span>'rules' => [
    </span>                <span>[
    </span>                    <span>'allow' => true,
    </span>                    <span>'actions' => ['login', 'view'],
    </span>                    <span>'roles' => ['?']
    </span>                <span>],
    </span>                <span>[
    </span>                    <span>'allow' => true,
    </span>                    <span>'actions' => ['create'],
    </span>                    <span>'roles' => ['@']
    </span>                <span>]
    </span>            <span>]
    </span>        <span>];
    </span>    <span>}
    </span>    <span>// ...
    </span><span>}</span>

    >最後,編輯您的Web應用程序配置文件以使用壓縮資產。

    <span>if (YII_ENV_DEV) {
    </span>    <span>// ...
    </span>    <span>$config['modules']['gii'] = [
    </span>        <span>'class' => 'yii\gii\Module',
    </span>        <span>'allowedIPs' => ['127.0.0.1', '::1']
    </span>    <span>]
    </span><span>}</span>
    >

    注意:

    >您必須手動下載並安裝這些外部工具。
    yii migrate<span>/create create_user_table</span>
    >

    結論

    >像任何好的框架一樣,yii可以幫助您快速創建現代的Web應用程序,並確保它們的表現良好。它推動您通過為您做很多繁重的舉重來創建安全和可測試的站點。您可以完全按照提供的方式輕鬆地使用其大多數功能,也可以修改每個功能以滿足您的需求。我真的鼓勵您檢查一下您的下一個網絡項目!

    您嘗試過yii 2嗎?你會?讓我們知道!

    經常詢問有關yii 2框架

    的問題(常見問題解答)

    >為什麼YII 2框架被認為是高度擴展的?

    yii 2框架被認為是高度擴展的,因為它允許開發人員自定義核心代碼的幾乎每個部分。這意味著,如果開發人員需要調整框架處理某些任務的方式,則可以執行此操作,而無需直接修改核心代碼。這是一個重要的優勢,因為它允許具有高度的靈活性和適應性,因此更容易量身定制框架以滿足特定的項目要求。

    yii 2框架如何確保高性能? > YII 2框架通過其有效的懶惰加載技術確保高性能。這意味著它僅加載特定過程所需的組件,從而減少服務器上的負載並改善應用程序的整體性能。此外,YII 2還支持數據緩存,這進一步增強了其性能。

    >

    是什麼使YII 2框架成為Web開發的安全選擇?

    yii 2框架框架具有強大的安全功能,內置了其核心的強大安全功能。它提供內置工具,用於輸入驗證,輸出過濾,SQL注入預防和跨站點腳本(XSS)預防。這些功能使其成為開發需要處理敏感數據的Web應用程序的安全選擇。

    >

    yii 2框架如何支持快速開發?

    yii 2框架通過其強大的代碼生成來支持快速開發工具,GII。 GII允許開發人員快速為模型,控制器,表單,模塊和擴展程序生成代碼。這大大減少了編寫樣板代碼所需的時間,使開發人員可以更多地專注於業務邏輯。

    我可以使用yii 2 Framework使用第三方代碼嗎?旨在與第三方代碼無縫合作。它使用Composer Dependenty Manager,這使得將第三方庫和軟件包集成到您的YII 2應用程序中變得易於。

    >

    > yii 2框架如何處理錯誤和異常?具有全面的錯誤處理和記錄系統。它可以處理PHP錯誤和異常,並提供各種記錄目標,包括文件,電子郵件和瀏覽器控制台。這使得更容易調試和解決您的應用程序中的問題。

    >

    > yii 2框架適合開發複雜的Web應用程序嗎?它提供了一系列工具和功能,例如MVC架構,數據庫抽象層和緩存支持,這些工具和功能使構建和維護複雜的應用程序變得更加容易。

    > yii 2 Framework如何支持國際化?

    YII 2框架為國際化(I18N)提供了廣泛的支持。它包括日期和時間格式,數字格式和消息翻譯的功能,使為全球受眾開發應用程序變得更加容易。

    yii 2框架可用哪種社區支持? > YII 2框架有一個大型而活躍的開發人員社區。在線提供許多論壇,博客和教程,您可以在其中找到幫助和建議。此外,官方YII網站還提供了全面的文檔和用戶指南。

    > yii 2框架如何與其他PHP框架進行比較?

    yii 2框架因其高框架而脫穎而出。性能,安全功能和可擴展性。它還支持快速發展,使其成為小型和大型項目的流行選擇。但是,項目的最佳框架取決於開發團隊的特定要求和專業知識。

以上是選擇YII 2框架的7個理由的詳細內容。更多資訊請關注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' =>

在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的實用應用和潛在的觸摸

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

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

如何註冊和使用Laravel服務提供商如何註冊和使用Laravel服務提供商Mar 07, 2025 am 01:18 AM

Laravel的服務容器和服務提供商是其架構的基礎。 本文探討了服務容器,詳細信息服務提供商創建,註冊,並通過示例演示了實際用法。 我們將從OVE開始

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。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.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MantisBT

MantisBT

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

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