目前PHP主流的框架有4個,Yii、ThinkPHP、laravel和codeigniter。php
PHP框架與其餘語言的框架有些不一樣。PHP的框架都是一些大而全的大東西。html
不像Java語言,Spring負責依賴注入、SpringMVC負責控制器、Mybatis負責數據庫相關、SpringSecurity負責權限相關,各司其職。不過SpringBoot已經逐漸成爲一個地基型框架。前端
因爲時間有限,我沒有選擇每一個框架都嘗試一下。從各自的官網上面看設計理念,我我的認爲Yii算是佼佼者,可是這裏要選擇學習laravel。mysql
爲何?由於laravel在GitHub上面的star數徹底碾壓其餘三個框架。另外,我比較欣賞laravel的自我介紹:The PHP Framework for Web Artisans,翻譯過來就是Web工匠的PHP框架。並且它一再強調本身的語法很優雅。linux
laravel推薦使用laravel/homestead做爲開發環境。laravel
homestead是什麼呢?git
官方解釋:Laravel Homestead 是一個官方預封裝的 Vagrant box ,它爲你提供了一個完美的開發環境,你不須要在本地機器安裝 PHP、 web 服務器和其餘的服務器軟件。程序員
那麼它的本質就是一個提供開發環境的虛擬機。github
它依賴於Vagrant。web
什麼是vagrant?
Vagrant是一種在單個工做流程中構建和管理虛擬機環境的工具。
國內開發者知道Vagrant的並很少,但知道Docker的卻很多。在不少狀況下,二者的性質差很少。
Vagrant 適合用來管理虛擬機,而docker適合用來管理應用環境。
既然Vagrant是一個構建和管理虛擬環境的工具,那麼還須要一個虛擬環境,homestead就是虛擬環境。虛擬環境有須要一個虛擬機,因此還須要選擇一個虛擬機軟件。vmware或virtualbox.
這兩個軟件的用途幾乎一致,最根本的區別就是vmware收費,virtualbox免費。
vmware穩定,性能強,功能多,但體積更龐大。virtualbox更小巧一些。
我從16年使用vmware至今有接近4年了,但從今年開始我再也不使用vmware,反而轉向virtualbox。緣由有兩點,你能夠參考一下:
1.以前我習慣使用虛擬機環境開發,這樣能夠隔離開本機環境和開發環境。不事後來我發現我使用電腦時幾乎無時無刻不在開發。就把本機環境和開發環境合起來用了。
2.費用問題,vmware收費太貴了。
如今使用virtualbox,主要是在centos上面測試一些軟件。
那麼針對框架開發環境的場景,我更推薦使用virtualbox。
因爲咱們是使用shell的方式訪問虛擬環境,因此還須要有一個shell工具。官方推薦使用git bash。
最後總結一下,安裝Homestead須要如下幾個軟件:
git bash(其實這一項非必需)
Hyper-V(虛擬機依賴的軟件,通常的主流電腦都會有,沒有的話去微軟官網安裝)
VMware或者Virtual Box
Vagrant
安裝這個環境會很繁瑣,甚至有些學習PHP的同窗會在安裝環境這一步驟上花費數天時間。
既然這麼麻煩,爲何還要使用Homestead呢?咱們第0天搭建的開發環境很差嗎?下面是官方的理由(解釋):
https://learnku.com/articles/4668/why-do-you-have-to-use-homestead-to-develop-laravel-applications
官方的說法裏,Homestead能夠解決掉不少麻煩,雖然Homestead自己也很麻煩。
這兩個軟件安裝和使用都比較簡單。這裏就再也不贅述。
之後可能會寫相關的文章。
這裏推薦廖雪峯老師的git教程:https://www.liaoxuefeng.com/wiki/896043488029600。至於VirtualBox,徹底不須要教程。多用用就會了。
打開git bash,輸入命令:
vagrant box add laravel/homestead
這條命令的做用是安裝最新版本的homestead。
可是國內網絡下載速度很慢,我嘗試了幾回才下載下來。你也能夠多試幾回。
除了命令安裝外,還能夠將box文件下載到本地再進行安裝。但這樣可能會出現其它問題。我不推薦這種方式安裝。
安裝以後使用vagrant box list
來查看是否安裝成功。
克隆下來homestead的目錄。
git clone https://github.com/laravel/homestead.git
下載後會在當前目錄看到Homestead文件夾。
Homestead文件夾根目錄下有一個init.sh文件,執行它。
bash init.sh
完成以上步驟,而且過程當中沒有出現錯誤提示,就證實沒有問題。
接下來,進入Homestead配置環節。
Homestead根目錄下有一個Homestead.yaml文件,裏面放着Homestead的主要配置。
內容大體以下:
---
ip
authorize和keys選項是git的公鑰配置,填寫正常的文件位置便可。
folders選項下的map表明咱們真實主機中的要映射的目錄,to表示Homestead虛擬機中被映射的目錄。
上面的配置,就是將本機的E:/project3/php/laravel
映射到/home/vagrant/code
.
看到這裏你應該很清楚了,Homestead就是一個linux虛擬機。
sites選項表明網址映射,map表示要在瀏覽器中輸入的地址,to表示虛擬機中被映射的文件目錄。
修改了sites的話,還要修改hosts文件。
windows的hosts文件在C:\Windows\System32\drivers\etc\
下。
若是你不想修改hosts文件,也能夠的。那麼你就須要在瀏覽器中輸入ip地址,好比上面的配置中,在瀏覽器輸入192.168.10.10
也是同樣的。
databases選項表明的是數據庫。默認的mysql數據庫用戶名是homestead,密碼是secret
將homestead.yaml文件配置好以後,在homestead文件夾根目錄打開git bash,執行vagrant up
命令啓動vagrant虛擬機。
若是整個過程沒有出現問題的話,開發環境就算搭建好了。
作到這一步,終於能夠建立laravel項目了。
建立laravel項目的方式有兩種。一種是在本地直接建立,一種是進入虛擬機建立。其本質都是同樣的。
在虛擬機建立的步驟以下:
執行vagrant ssh
登錄虛擬機。
切換到映射的目錄下,執行composer create-project laravel/laravel Laravel --prefer-dist
命令,建立一個名爲 Laravel 的laravel項目。
在瀏覽器中輸入http://192.168.10.10/或者輸入你配置的映射網址,看到Laravel的默認界面就算是成功了。
根目錄下有以下目錄:
app
目錄包含應用程序的核心代碼。
bootstrap
目錄包含引導框架的 app.php
文件。
config
目錄,顧名思義,包含應用程序全部的配置文件。
database
目錄包含數據填充和遷移文件以及模型工廠類。
public
目錄包含了入口文件 index.php
,它是進入應用程序的全部請求的入口點。
resources
目錄包含了視圖和未編譯的資源文件(如 LESS、SASS 或 JavaScript)。
routes
目錄包含了應用的全部路由定義。
storage
目錄包含編譯後的 Blade 模板、session 會話生成的文件、緩存文件以及框架生成的其餘文件。
tests
目錄包含自動化測試文件。
vendor
目錄包含全部的 Composer 依賴包。
咱們的代碼幾乎都放在app目錄下,因此主要看一下app目錄。
咱們要作的是一個RESTful風格的API服務,那麼app目錄下對咱們來講最重要的目錄是Http目錄。
Http目錄下只有Controller和Middleware兩個文件夾和一個Kernel.php文件。
Controller文件夾是控制器,Middleware是中間件。Kernel是用來管理中間件的。
控制器的概念,你們應該都理解,很少說了。
中間件的概念,Java程序員可能沒什麼印象,你能夠先理解成過濾器。
做爲一個MVC服務框架,這幾乎就是核心的所有了。
另外,咱們還須要注意一個文件,在根目錄下的/routes/api.php
。這個文件是用來管理路由的。
用過Spring框架的同窗應該知道,Spring的路由是和控制器放在一塊兒的,經過給類和方法寫註解來標記路由。也就是說在Spring中,路由就是控制器的概念,它們是緊密鏈接在一塊兒的,這是老一代服務端的做風。
laravel的作法是要比Spring優雅不少的,它和目前主流的前端思想很吻合。將路由和控制器分離開來了。由路由跳轉到控制器。
這在應用中沒有任何區別,但在寫法上,laravel確實更勝spring一籌。
這一章講了laravel框架的環境搭建和laravel框架模板目錄結構的學習。