首頁 > 後端開發 > php教程 > YII 2.0的期望

YII 2.0的期望

Jennifer Aniston
發布: 2025-02-19 13:02:10
原創
634 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板