YII 2.0已發佈到Beta,首次穩定版本的目標設定為2014年中期。 Github問題列表列表有300個公開問題,而我寫這篇文章的同時2913次關閉,並且兩個數字仍在增加。 2.0RC里程碑的進度為99%。我的猜測是團隊很接近,但是我們可能必須等待更長的時間。當我們都在等待時,讓我們看看一個已經可以使用的示例,看看我們可以期望的。
鑰匙要點- > YII 2.0引入了重大改進和更改,包括使用名稱空間,特徵和作曲家集成,增強其現代PHP框架功能。
- > 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 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代碼,表單驗證和兩個可用於登錄的用戶。登錄與以前相同;幾乎一無所有。儘管如此,這還是一個很好的開始。
基本應用程序的設計發生了巨大變化。以前,您將獲得一個基於藍圖CSS框架的應用程序,而現在我們從Twitter Bootstrap開始。改進?它可能與藍圖進行了比較,但是Bootstrap又比藍圖嘗試過的要多得多。
Bootstrap將為您提供各種應用程序組件,並將加快構建應用程序。另一方面,有些人可能會爭辯說所有站點都與Bootstrap看起來都一樣(主題僅部分修復),這也將使您的站點更大的尺寸。無論哪種方式,使用YII 2.0的集成都使用YII2-Bootstrap擴展程序完成。這使得將Bootstrap組件集成在您的視圖中非常容易。
>
>
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。佔位符的格式和样式已經過認真的重新設計,可以提供更多格式的選項。一些示例: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
> <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,訪問控制是控制器行為的一部分():
>>我確實注意到示例代碼(不是框架本身!)缺少許多放映,並且有很多@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>
>模型> 不過,
派生的Activerecord經歷了一些嚴重的變化。使用ActivereCord進行搜索的語法更像是編寫查詢,因為CDBCriteria已經消失了。它已被ActiveQuery替換為使檢索信息更容易:關係定義也發生了巨大變化。讓我們以博客作者的身份以一個網站發布,以發布有關用戶發表評論的文章的文章。作者表的關係定義如下所述。我將從yii 1.1中的外觀開始
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
如您所見,您將在大數組中定義主動記錄的所有關係。在YII 2.0中,您必須定義Getter方法,該方法返回所有這些關係的ActiveQuery對象。 您必須使用“通過”關鍵字來定義中介表之間的關係。>
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
這是一個相當簡單的示例。通過返回ActiveQuery對象的GETTER函數定義關係允許更多。例如,您可以添加一個特定函數,該功能可以通過在返回的ActiveQuery中添加where()調用來獲取> 50個註釋的帖子。一個有趣的補充是定義交叉DBMS關係的可能性。您可以定義MySQL和MongoDB或Redis之間的關係,並將其用作一個對象。 正如我之前所說的
>; PHP 5.4使短迴聲標籤始終可用。這使得由混合PHP和HTML組成的視圖更可讀;<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 1.1和YII 2.0的部分。對於大型項目,這是創建安全遷移路徑的好方法。將您的通用代碼遷移到YII 2.0,並花點時間在更複雜或填充的零件上。
結論YII 2.0的文檔質量從yii 1.1提高了。幾年前,當我從YII 1.1開始時,我很難弄清楚東西,我覺得該文檔比以前更為廣泛。
>您是否已經看過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如何處理用戶身份驗證?yii 2.0提供了靈活的用戶身份驗證系統。它支持傳統的用戶名/密碼身份驗證和更現代的方法(例如Oauth和OpenID)。您還可以擴展內置的用戶模型以添加自己的身份驗證方法。
> yii 2.0如何處理錯誤處理和日誌記錄?
yii 2.0提供了可靠的錯誤處理和記錄系統。它可以捕獲和處理PHP錯誤和異常。這些錯誤可以以不同的格式登錄並發送到不同的目的地,例如文件,電子郵件和瀏覽器。>
>如何測試我的yii 2.0應用程序?yii 2.0提供了測試框架基於Phpunit和硒。它支持單位測試和功能測試。您可以編寫測試用例以測試模型,視圖和控制器。測試框架還提供了模擬用戶輸入並檢查輸出的方法。
>
以上是YII 2.0的期望的詳細內容。更多資訊請關注PHP中文網其他相關文章!

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

本文比較了PHP和ASP.NET,重點是它們對大規模Web應用程序,性能差異和安全功能的適用性。兩者對於大型項目都是可行的,但是PHP是開源和無關的,而ASP.NET,


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

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

SublimeText3漢化版
中文版,非常好用

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具