【翻譯】Yii2 第1章 開始

讓咱們看看,怎樣以最小的代價使用Yii2建立一個站點。目的是學習使用Yii2應用模版的安裝過程,並開始體驗模版裏提供的一系列特性。php

一個基本應用

開始使用Yii2最基本和直接的方式,是使用Yii2團隊發佈在GitHub上的模版文件(https://github.com/yiisoft/yii2),並使用Composer工具。在Yii的上一個版本中,你必須本身手工下載、並解壓framework文件,當你使用Yii2時,你一樣能夠手工下載,但同時也能夠採用專門精心準備的Composer工具來簡化安裝過程。html

安裝basic模版

在硬盤上找一個合適的目錄,獲取Composer的PHP歸檔文件(PHAR)。能夠採用多種方式,例如,使用以下命令:mysql

curl -sS https://getcomposer.org/installer | php

而後,運行下面的命令會建立一個名爲basic的子目錄,並使用Yii2團隊發佈的basic模版填充完成:git

php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

請注意:Yii2有幾個特定的系統範圍的依賴。你可能須要事先在GitHub倉庫裏查閱一下composer.json文件,學習它的用法(https://github.com/yiisoft/yii2)。在任何案例中,Composer會告訴你須要安裝哪些東西才能使Yii2正常工做。Yii2常常更新,而且它的運行環境要求也會隨之變化。github

在開始執行上面的命令以前,你最好查看一下Composer的文檔,理解命令的含義。跟咱們有關的部分 yiisoft/yii2-app-basic basic,意思是「將發佈在 https://github.com/yiisoft/yii2-app-basic 的內容,拷貝到本地的basic目錄 」。這個命令將安裝項目的骨架,包含一系列預約義的目錄。這其中有一個名爲vendor的子目錄,裏面包含了不少的Composer包。basic目錄,就是你新建應用的根目錄。web

使用Composer安裝完所需的包,你可使用下面這條命令:sql

php -S localhost:8000 –t basic/web

在命令中,8000是一個端口號,你能夠根據本身的狀況進行修改。這樣,一個web server就已經能夠訪問了。數據庫

請注意:這固然並非配置PHP Web應用的最佳方式。內建的web server只適應於「冒煙測試」,用以檢驗應用是否能正常工做。它只適合本地開發使用,而不能承擔高負載。下一章將會介紹線上環境的部署。json

使用瀏覽器訪問 http://localhost:8000/。你將看到Yii2的歡迎頁,這意味着你的基本設置已經搞定了。bootstrap

basic模版的細節

經過閱讀模版提供的README文件(https://github.com/yiisoft/yii2/blob/master/apps/basic/README.md),你能夠得到basic目錄結構的詳盡說明。或者,你也能夠閱讀Yii2關於basic模版的文檔(http://www.yiiframework.com/doc-.0/guide-start-installation.html)。

最重要的事情是,你須要理解,web目錄,這個對外發布的目錄,只是整個應用所有代碼中的一個目錄。web目錄以外的其它目錄,都是不能經過web server進行訪問的。

正如你已經看過的安裝過程描述,在你已經擁有PHP環境,可選的curl工具時,沒有特殊的環境須要配置,全部的依賴都經過Composer管理起來了。

在basic模版中,第3代的自動化測試工具也設置好了。它包含了驗收測試,功能測試,單元測試等大部分功能。已經包含在模版中的測試,就像示例程序同樣很是有用,告訴咱們怎樣使用測試框架,這個測試工具就是 Codeception(http://codeception.com/)。

若是你只是想展現一些新聞種子或者作一個只包含幾個頁面的web工具,這個模版就已經足夠可用了。然而,若是你的目標是包含前臺和後臺的大型系統(10個以上的獨立路由),這就缺乏一些子系統了。

同查看composer.json文件中的項目依賴,Yii2有幾個重要的部分作成了獨立的插件包,它們也經過Composer安裝好了。這些包分別是:

  • Gii,代碼生成器,將會在第3章討論,自動生成CRUD代碼

  • 調試控制檯,已經包含在basic應用模版中

  • Codeception測試框架的一個包裝

  • SwiftMailer庫(http://swiftmailer.org/)的包裝(https://github.com/yiisoft/yii2-swiftmailer)

  • Twitter Bootstrap UI庫被打包進Yii2的asset包中(http://getbootstrap.com/)

前3個只是在開發時使用,放在生產環境中反而有害。基本上,你在任何一個項目中都須要它們。

basic模版安裝的快速指引:

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
php -S localhost:8000 -t basic/web

高級應用

相對於basic模版,Yii2還提供了一個advanced模版。它更多的針對中型應用(例如一些真實的商業應用),這種應用一個典型的特徵是有兩個分離的界面。一個進行內容管理,另外一個展現給訪問者。所以,經過這個模版,你能獲得一個完整的CMS骨架。

安裝advanced模版

第一步跟安裝basic模版相似。須要獲取Composer,而且設置一個新的項目:

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced

你可能已經注意到,在上面的命令中,僅僅是把「basic」替換成了「advanced」。

如今,咱們來作一些新的改變。首先,進入剛剛建立的advanced目錄,你須要生成本地化配置,運行下面的命令:

./init

是的,就是在應用的根目錄執行init腳本。它會詢問你想配置開發模式仍是生產模式,並建立全部必須的輔助配置代碼,以及入口腳本。須要明確說明的是,它僅僅根據你選擇的是開發環境仍是生產環境,把文件拷貝到environments目錄下的dev或prod子目錄中。打開environments目錄看看,你就會理解init腳本是怎麼工做的了。

下一步,你須要建立本應用使用的數據庫。缺省狀況下,配置開發環境,你應該在本機設置一個名爲yii2advanced的數據庫,root用戶密碼爲空,你能夠在common/config/main-local.php文件中看到這些細節。

既然你的數據庫已經設置好了,你就能夠運行遷移了。咱們將在下一章討論遷移腳本(而且咱們甚至會本身寫一些腳本),可是,若是你對數據遷移這個很是重要的概念很陌生,你須要在Yii2網站上閱讀相關的官方文檔(在寫做本書時,官方文檔還未發佈,可是框架的文檔在這裏 https://github.com/yiisoft/yii2/blob/master/docs/guide/db-migrations.md)。(譯註:建立數據庫,寫入初始化數據,升級數據庫表等操做,建議放在遷移腳本中)

只需運行下面的命令便可:

./yii migrate

這個命令會展現當前遷移列表,目前包含一條遷移,並詢問你是否要執行遷移。(譯註:遷移使用前面配置的數據庫,用以記錄遷移執行的歷史,所以,若是前面沒有配置數據庫,執行上面的命令時會有錯誤提示)

如今,全部事情都搞定了。執行下面的命令,讓先後臺均可以訪問:

php -S localhost:8080 -t frontend/web
php -S localhost:8081 -t backend/web

與配置basic模版同樣,咱們使用了PHP內建的web server,僅僅是由於做爲示例,這比在Apache或其它web server中配置更爲簡單。

如今,你可使用後臺進行內容管理,前臺展現給訪客。同時,你還有一個完善的控制檯,能夠經過yii腳原本執行遷移。advanced模版的前臺跟basic模版很類似。下面是後臺運行起來的截圖:

後臺缺省處於鎖定狀態,點擊登陸菜單,登陸成功後,你才能看到和basic模版或前臺同樣的頁面。

advanced模版的細節

對於advanced模版,最重要的事情是將3個basic模版整合在一塊兒了:

  • frontend目錄中,放置的是前臺代碼。對外發布的功能、內容都放在這裏。

  • backend目錄是爲CMS(內容管理系統)準備的,非受權用戶不能訪問。你應該把CRUD這樣的管理程序放在這裏。

  • console目錄主要用來存放自定義的控制檯命令,能夠放置任意多命令,就像遷移腳本同樣。

  • common目錄包含在前臺、後臺、控制檯均可以使用的公共代碼,由於這幾部分構成了整個應用。

固然,沒有人會強制你像上面描述的同樣使用前臺和後臺,你也可能會有兩個前臺共享相同的代碼,你能夠按你想要的方式自由的使用。無論怎樣,advanced模版已經準備好的後臺UI,在開始時就提供了權限的密碼保護。

在剛剛安裝的advanced應用中,你須要知道登陸特性。初始時,沒有定義用戶,你必須使用前臺的signup(註冊)來本身建立一個。這樣,你就能用剛剛建立的身份登陸前臺和後臺。前臺跟basic應用同樣,後臺也差很少,僅僅是加入了登陸功能。因此,後續的開發就徹底交給你了。

advanced安裝的快速指引:

curl -sS https://getcomposer.org/installer | php
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced
cd advanced
./init
mysql -u root -e 'create database yii2advanced'
./yii migrate
php -S localhost:8080 -t frontend/web
php -S localhost:8081 -t backend/web

小結

Yii2幾乎容許你配置framework中使用的全部路徑,所以,你能夠按你想法建立目錄結構。利用PHP5.3引入的命名空間,你甚至可使物理結構不一樣於邏輯結構,也就是說目錄中文件的存放不一樣於命名空間中的類的結構,但這樣作很乏味。

在下一章,咱們將會不使用模版,白手起家,經過Yii2建立一個真實的項目(即便很小)。

下一節

相關文章
相關標籤/搜索