目錄
要求
什麼變化了?
yii 2.0,帶有許多新功能和對其前身的改進。現在,它支持使用命名空間的使用,這使得代碼組織變得更加容易。它還引入了一個更靈活和強大的新路由系統。已重新設計了ActiverEcord類,以支持更多數據庫類型,包括NOSQL數據庫。該框架還包括一個新的Restful API開發支持,使構建API變得更加易。此外,YII 2.0具有改進的安全功能,包括內置CSRF(跨站點請求偽造)保護。
> yii 2.0如何處理國際化(I18N)?國際化(I18N)支持。它使您可以用不同的語言存儲同一消息的多個翻譯。您還可以根據語言環境格式化日期,數字和貨幣。 yii 2.0還支持基於上下文的複數形式和消息選擇。
yii 2.0調試器是一個強大的工具,可以幫助您進行調試。您的申請。它收集並顯示有關您應用程序的每個請求的信息,包括執行的SQL查詢,請求和響應數據以及性能正時數據。您可以通過應用程序頁面底部的面板訪問此信息。
首頁 後端開發 php教程 YII 2.0的期望

YII 2.0的期望

Feb 19, 2025 pm 01:02 PM

YII 2.0的期望

去年4月,

YII 2.0已發佈到Beta,首次穩定版本的目標設定為2014年中期。 Github問題列表列表有300個公開問題,而我寫這篇文章的同時2913次關閉,並且兩個數字仍在增加。 2.0RC里程碑的進度為99%。我的猜測是團隊很接近,但是我們可能必須等待更長的時間。當我們都在等待時,讓我們看看一個已經可以使用的示例,看看我們可以期望的。

鑰匙要點

    > YII 2.0引入了重大改進和更改,包括使用名稱空間,特徵和作曲家集成,增強其現代PHP框架功能。 該框架已從藍圖CSS框架轉變為Twitter Bootstrap,這不僅改變了美學,而且還為快速應用程序開發提供了廣泛的UI組件。 在YII 2.0中進行錯誤處理已大修以將所有錯誤轉換為異常,提供更有信息的輸出並改善調試過程。 YII中的代碼生成工具 gii在YII 2.0中仍然是不可或缺的,現在支持更好的代碼生成CRUD操作和國際化。
  • > YII 2.0需要PHP 5.4或更高的PHP,並利用了高級PHP功能,這可能會影響與較舊的服務器環境的兼容性,但最終提供了更健壯和安全的框架。
  • >在2008年發行後,YII的第一個版本很快就變得很快。
  • yii使用其他框架,語言和圖書館中的許多想法:Prado,Ruby,Jquery,Symfony和Joomla都被公認為是靈感的來源。
  • >
  • > YII 2.0日期的第一個承諾可以追溯到2011年,但該開發項目是去年的。該團隊進行了重寫,目的是成為新一代PHP框架的最新狀態。它採用了最新的技術和功能,例如作曲家,PSR,名稱空間,特質等。
  • >值得一提的是,根據下載頁YII版本1.1的支持將於2015年12月31日結束,因此我們確實有一些時間開始考慮進行過渡。
>

要求

>使用名稱空間和特徵的用法將要求提高到PHP 5.4。此外,當您開始開發時,您還需要MB_STRING,PDO和INTL擴展。如果您運行自己的服務器,這應該不是問題,但是如果您在共享環境下,則可能是問題。當然,隨著該問題的及時,該問題將消失。

>

>安裝

現在可以從作曲家安裝 yii。我們將盡快仔細研究此安裝方法。

當前,有兩個申請示例可用。有一個基本示例,其中包含幾頁,聯繫頁面和登錄頁面。高級示例添加了一個單獨的前端和後端,數據庫交互,註冊和密碼恢復。

入門

>我將從基本示例開始。如果您以前看過YII,則可以識別出YII 1.1隨附的相同基本

WebApp。使用以下命令將基本示例與作曲家一起安裝:>

然後,您可以通過打開http://localhost/yii2-app-basic/requirements.php來檢查服務器是否滿足您的需求。然後,實際應用程序將從http:// localhost/yii2-app-basic/web/運行。
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
登入後複製
登入後複製
登入後複製

這是要注意的第一個重要的事情:想法是,您將應用程序的詞根設置為/path/to/to/to/application/web,就像與Symfony一樣。目錄佈局從版本1.1改變了一點。如果仔細觀察,更改將是有道理的,並將提高應用程序的安全性。

以前,所有應用程序組件(模型,視圖,控制器,框架和供應商庫)都將生活在受保護文件夾中的文檔根下。這樣,安全性取決於要尊重的.htaccess文件,這意味著您的應用程序默認情況下的應用程序是100%不安全的。將所有應用程序組件從文檔根中移開,從而阻止Web服務器將應用程序組件發送給用戶。

>

>您可能會發現自己正在尋找實際的框架來源。該框架是使用作曲家安裝的組件,因此它將位於Vendoryiisoftyii目錄下。在這裡,您會發現更多,但是現在,我們將其留下。

>目前,讓我們更改本地Web服務器配置,然後將文檔root設置為/路徑/到/application/web。我添加了一個VirtualHost http://yii2-app-basic.localhost/,但您認為適合自己的情況。默認配置設置為將腳本文件隱藏在URL中。如果您使用的是Apache,則需要在Web目錄中添加.htaccess文件才能指示Apache進行重寫,默認情況下不存在。

>

查看基本YII應用程序

>現在我們已經運行了基本應用程序,有些祝賀... >
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
登入後複製
登入後複製
登入後複製

謝謝!到目前為止,還沒有火箭科學。

>您將從開始頁面,關於頁面的靜態頁面,聯繫頁面和登錄頁面開始。聯繫頁面和登錄表具有與以前相同的功能; CAPTCHA代碼,表單驗證和兩個可用於登錄的用戶。登錄與以前相同;幾乎一無所有。儘管如此,這還是一個很好的開始。 YII 2.0的期望

基本應用程序的設計發生了巨大變化。以前,您將獲得一個基於藍圖CSS框架的應用程序,而現在我們從Twitter Bootstrap開始。改進?它可能與藍圖進行了比較,但是Bootstrap又比藍圖嘗試過的要多得多。
Bootstrap將為您提供各種應用程序組件,並將加快構建應用程序。另一方面,有些人可能會爭辯說所有站點都與Bootstrap看起來都一樣(主題僅部分修復),這也將使您的站點更大的尺寸。無論哪種方式,使用YII 2.0的集成都使用YII2-Bootstrap擴展程序完成。這使得將Bootstrap組件集成在您的視圖中非常容易。

> 您會注意到的另一件事是底部的調試欄。就像在Symfony中一樣,默認情況下安裝和激活。它允許快速訪問有關您的配置,請求和應用程序記錄的大量信息。它將保留帶有調試信息的請求的歷史記錄。

>

YII 2.0的期望

YII處理與通常情況下不同的錯誤。 YII將所有錯誤(致命和非致命)轉換為例外。通過渲染有見地的輸出來處理這些方法,將您指向您混亂的點或代碼生成通知。即使是解析錯誤,YII 1.1都會歸結為基本的PHP錯誤,也可以很好地介紹您的代碼。這是我們大多數人都會欣賞的。

YII 2.0的期望

gii也再次存在並默認被激活。

>

YII 2.0的期望 GII將通過生成供您開始的代碼來幫助您,這是另一種有助於加快開發的好工具。它將為您生成模型和控制器。 CRUD生成器將進一步走一步,並為所有操作生成完整的MVC集。 GII還將通過立即插入yii :: t()函數在需要它的地方生成更適合國際化的代碼(I18N)。

>

>基本應用程序現在還帶有一個簡單的命令行應用程序,您可以在基礎上構建。 yii 1.1已經支持了這一點,但是您必須從Wiki中獲得一個示例。

這就是您在基本應用程序中找到的。還有一個可用的高級應用程序示例。它的結構有些不同,但可以為您的應用程序添加更多功能:

>

>用戶授權,身份驗證和密碼還原。 一個應用程序分為前端和後端。

  • 繼續瀏覽基本版本,讓我們仔細研究並潛入代碼吧……>

    什麼變化了?

    發生了很多變化。一開始可能會使您感到困惑,但是我發現大多數更改很有意義,而且易於接受。這是我發現有趣,有趣或令人困惑的一些變化。

    > PHP 5.4要求使一些更改成為可能;陣列短標籤可用。在視圖中使用Echo簡短標籤也是安全的,因為這不再取決於配置設置。

    composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
    登入後複製
    登入後複製
    登入後複製
    一個很小的變化,但是您會很快遇到;之前,您將使用yii :: app()訪問應用程序實例及其組件。在yii 2.0中,這從靜態函數變為靜態變量yii :: $ app。

    >翻譯函數yii :: t()仍然與我們同在。它指示YII使用I18N組件將提供的文本轉換為當前使用的語言。您也可以指示它替換變量。

    佔位符的格式和样式已經過認真的重新設計,可以提供更多格式的選項。一些示例:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    登入後複製
    登入後複製
    登入後複製

    由於這種佔位符格式,dateTimeFormatter消失了:>
    <span><span><?php
    </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
    </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
    </span></span><span><span>?></span>
    </span><span><span><?php echo $someVar; ?></span> //Yii 1.1
    </span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
    登入後複製
    登入後複製

    >此功能由ICU庫提供。 YII文檔稱其為原始文檔:“非常神秘”。我敢您閱讀它並嘗試理解它……希望YII文檔及時包含一個更可讀的版本。

    控制器
    <span><span><?php
    </span></span><span><span>echo `Yii<span>::</span>t('app', 'Hello, {username}!', [
    </span></span><span>  <span>'username' => $username,
    </span></span><span><span>]);
    </span></span><span><span>?></span></span>
    登入後複製

    >之前,如果您想使用YII訪問控制功能,則AccessControl()將是控制器的函數。使用YII 2.0,訪問控制是控制器行為的一部分():

    >

    這幾乎與yii 1.1中的方式相同

    >我確實注意到示例代碼(不是框架本身!)缺少許多放映,並且有很多@InHeritDoc的評論。這不是您從一個示例中期望的,但我認為這將是及時固定的。

    >
    <span><span><?php
    </span></span><span><span>echo <span>\Yii</span>::t('app', '{n, number} is spelled as {n, spellout}', ['n' => 81]);
    </span></span><span><span>echo <span>\Yii</span>::t('app', 'You are {n, ordinal} in line, please hold.', ['n' => 3]); //Will echo "You are 3rd in line, please wait.".
    </span></span><span><span>echo <span>\Yii</span>::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array(
    </span></span><span>    <span>'n' => 14,
    </span></span><span><span>));
    </span></span><span><span>?></span></span>
    登入後複製
    >模型

    基本模型(以前的CModel)並沒有太大變化。現在,方案允許您更改驗證規則的執行。您可以根據當前場景更改需要驗證的需要(即,在前端或後端使用時具有不同規則的模型)。

    > 不過,

    派生的Activerecord經歷了一些嚴重的變化。使用ActivereCord進行搜索的語法更像是編寫查詢,因為CDBCriteria已經消失了。它已被ActiveQuery替換為使檢索信息更容易:

    關係定義也發生了巨大變化。讓我們以博客作者的身份以一個網站發布,以發布有關用戶發表評論的文章的文章。作者表的關係定義如下所述。我將從yii 1.1中的外觀開始
    composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
    登入後複製
    登入後複製
    登入後複製
    如您所見,您將在大數組中定義主動記錄的所有關係。在YII 2.0中,您必須定義Getter方法,該方法返回所有這些關係的ActiveQuery對象。 您必須使用“通過”關鍵字來定義中介表之間的關係。

    >您現在有兩個選擇來定義此問題;通常,您會在關係函數中使用Via()方法。如果僅需要樞軸表之後的表中的數據,則還可以使用Viatable()方法來定義關係。與上面的示例相同,但現在適用於yii 2.0:

    >

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    登入後複製
    登入後複製
    登入後複製
    這是一個相當簡單的示例。通過返回ActiveQuery對象的GETTER函數定義關係允許更多。例如,您可以添加一個特定函數,該功能可以通過在返回的ActiveQuery中添加where()調用來獲取> 50個註釋的帖子。 一個有趣的補充是定義交叉DBMS關係的可能性。您可以定義MySQL和MongoDB或Redis之間的關係,並將其用作一個對象。

    視圖

    >在視圖中要注意的主要內容是,$這不再是指控制器實例。從視圖中,$這是yiiwebview對象的實例。可以通過$ this->上下文訪問控制器。

    正如我之前所說的

    >; PHP 5.4使短迴聲標籤始終可用。這使得由混合PHP和HTML組成的視圖更可讀;

    渲染()和renderpartial()函數也更改。在它會自動迴聲之前,您必須添加一個附加參數才能使渲染的輸出作為字符串。 yii 2.0將始終返回render()上的字符串 - 就像呼叫一樣,使其與小部件的行為方式更加一致。
    <span><span><?php
    </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
    </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
    </span></span><span><span>?></span>
    </span><span><span><?php echo $someVar; ?></span> //Yii 1.1
    </span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
    登入後複製
    登入後複製
    >

    >從yii 1.1

    升級

    您是否應該考慮將YII 1.1申請升級到YII 2.0? Brunoškvorc最近在SitePoint上寫了有關舊版代碼的文章。他認為,如果您使用的軟件至關重要,則應在2個月內進行重寫 - 尤其是

    >。我同意他的看法,建議您考慮一下您對應用程序感到認真,並希望在YII 1.1生命的盡頭維護它。但是一如既往;這取決於您的情況。

    >有一個特別頁面,專門用於在YII網站上升級YII。目前,最大的問題是您的擴展。如果您依靠很多擴展名,您將很難做到,因為社區需要花費一些時間來編寫YII 2.0的擴展名。如果您是真正的專業人士,那麼您當然可以認真看一下您使用的擴展名,並考慮(重新)寫它們。

    遷移手冊在應用程序中有一個關於運行YII 1.1和YII 2.0的部分。對於大型項目,這是創建安全遷移路徑的好方法。將您的通用代碼遷移到YII 2.0,並花點時間在更複雜或填充的零件上。

    結論

    瀏覽YII 2.0的權威指南,使我越來越熱情地開始使用YII 2.0。我已經不得不阻止自己在一個新項目中使用它,因為我無法使用預生產代碼中的問題。

    YII 2.0的文檔質量從yii 1.1提高了。幾年前,當我從YII 1.1開始時,我很難弄清楚東西,我覺得該文檔比以前更為廣泛。

    >您是否已經看過YII 2.0,甚至已經使用了一些東西了?請告訴我們您遇到了什麼。我很想知道你的經歷!

    經常詢問有關yii 2.0

    的問題 與以前的版本相比,YII 2.0中有哪些新功能是什麼?

    yii 2.0,帶有許多新功能和對其前身的改進。現在,它支持使用命名空間的使用,這使得代碼組織變得更加容易。它還引入了一個更靈活和強大的新路由系統。已重新設計了ActiverEcord類,以支持更多數據庫類型,包括NOSQL數據庫。該框架還包括一個新的Restful API開發支持,使構建API變得更加易。此外,YII 2.0具有改進的安全功能,包括內置CSRF(跨站點請求偽造)保護。

    >

    > yii 2.0如何處理國際化(I18N)?國際化(I18N)支持。它使您可以用不同的語言存儲同一消息的多個翻譯。您還可以根據語言環境格式化日期,數字和貨幣。 yii 2.0還支持基於上下文的複數形式和消息選擇。

    >

    yii 2.0調試器是什麼,它如何工作?

    yii 2.0調試器是一個強大的工具,可以幫助您進行調試。您的申請。它收集並顯示有關您應用程序的每個請求的信息,包括執行的SQL查詢,請求和響應數據以及性能正時數據。您可以通過應用程序頁面底部的面板訪問此信息。

    >

    >如何使用第三方擴展程序擴展yii 2.0?

    yii 2.0支持使用第三方擴展,可以使用Composer軟件包管理器安裝。安裝後,您可以像YII的內置功能一樣使用這些擴展名。 YII社區已經開發了廣泛的擴展名,可提供其他功能,例如用戶身份驗證,表單驗證和數據庫抽象。

    > yii 2.0如何處理數據庫遷移? yii 2.0提供功能強大的數據庫遷移工具,使您可以版本控制數據庫更改。您可以使用yii遷移/創建命令創建一個新的遷移。遷移腳本將包含用於應用和重新遷移的方法。然後,您可以使用YII遷移/UP命令應用遷移。

    > yii 2.0如何支持靜止的API開發?

    yii 2.0提供了一組工具來幫助您開發RESTFULE API。它包括對路由,請求處理,響應格式和錯誤處理的支持。您還可以使用ActiveController類來快速為您的API生成CRUD(創建,讀取,更新,刪除)操作。

    yii 2.0 2.0 hange form norm vermation驗證?

    yii 2.0提供了功能強大的功能形式驗證系統。您可以在模型類中為表單字段定義驗證規則。當提交表單時,YII將根據這些規則自動驗證輸入數據並生成適當的錯誤消息。

    >

    > yii 2.0如何處理用戶身份驗證?

    yii 2.0提供了靈活的用戶身份驗證系統。它支持傳統的用戶名/密碼身份驗證和更現代的方法(例如Oauth和OpenID)。您還可以擴展內置的用戶模型以添加自己的身份驗證方法。

    > yii 2.0如何處理錯誤處理和日誌記錄?

    yii 2.0提供了可靠的錯誤處理和記錄系統。它可以捕獲和處理PHP錯誤和異常。這些錯誤可以以不同的格式登錄並發送到不同的目的地,例如文件,電子郵件和瀏覽器。

    >

    >如何測試我的yii 2.0應用程序?

    yii 2.0提供了測試框架基於Phpunit和硒。它支持單位測試和功能測試。您可以編寫測試用例以測試模型,視圖和控制器。測試框架還提供了模擬用戶輸入並檢查輸出的方法。 >

以上是YII 2.0的期望的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱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

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

PHP 8.1中的枚舉(枚舉)是什麼? PHP 8.1中的枚舉(枚舉)是什麼? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是REST API設計原理? 什麼是REST API設計原理? Apr 04, 2025 am 12:01 AM

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

您如何在PHP中有效處理異常(嘗試,捕捉,最後,投擲)? 您如何在PHP中有效處理異常(嘗試,捕捉,最後,投擲)? Apr 05, 2025 am 12:03 AM

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

PHP中的匿名類是什麼?您何時可以使用它們? PHP中的匿名類是什麼?您何時可以使用它們? Apr 04, 2025 am 12:02 AM

匿名類在PHP中的主要作用是創建一次性使用的對象。 1.匿名類允許在代碼中直接定義沒有名字的類,適用於臨時需求。 2.它們可以繼承類或實現接口,增加靈活性。 3.使用時需注意性能和代碼可讀性,避免重複定義相同的匿名類。

See all articles