搜尋
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></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></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></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></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
在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 06, 2025 am 02:22 AM

Laravel框架的Storage::download方法提供了一個簡潔的API,用於安全地處理文件下載,同時管理文件存儲的抽象。 以下是一個在示例控制器中使用Storage::download()的例子:

Laravel中的HTTP方法驗證Laravel中的HTTP方法驗證Mar 05, 2025 pm 04:14 PM

Laravel簡化了傳入請求中的HTTP動詞處理,從而簡化了應用程序中的多樣化操作管理。 方法()和iSmethod()方法有效地識別和驗證請求類型。 此功能對於構建至關重要

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 無盡。

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

記事本++7.3.1

記事本++7.3.1

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