8天學會PHP之day4 框架環境搭建

 

1、框架選擇

目前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

 

2、開發環境搭建

Homestead

laravel推薦使用laravel/homestead做爲開發環境。laravel

homestead是什麼呢?git

官方解釋:Laravel Homestead 是一個官方預封裝的 Vagrant box ,它爲你提供了一個完美的開發環境,你不須要在本地機器安裝 PHP、 web 服務器和其餘的服務器軟件。程序員

那麼它的本質就是一個提供開發環境的虛擬機。github

它依賴於Vagrantweb

什麼是vagrant?

Vagrant是一種在單個工做流程中構建和管理虛擬機環境的工具。

國內開發者知道Vagrant的並很少,但知道Docker的卻很多。在不少狀況下,二者的性質差很少。

Vagrant 適合用來管理虛擬機,而docker適合用來管理應用環境。

既然Vagrant是一個構建和管理虛擬環境的工具,那麼還須要一個虛擬環境,homestead就是虛擬環境。虛擬環境有須要一個虛擬機,因此還須要選擇一個虛擬機軟件。vmwarevirtualbox.

這兩個軟件的用途幾乎一致,最根本的區別就是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和VirtualBox

這兩個軟件安裝和使用都比較簡單。這裏就再也不贅述。

之後可能會寫相關的文章。

這裏推薦廖雪峯老師的git教程:https://www.liaoxuefeng.com/wiki/896043488029600。至於VirtualBox,徹底不須要教程。多用用就會了。

安裝Homestead

打開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根目錄下有一個Homestead.yaml文件,裏面放着Homestead的主要配置。

內容大體以下:

---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
  - ~/.ssh/id_rsa

folders:
  - map: E:/project3/php/laravel
    to: /home/vagrant/code

sites:
  - map: homestead.test
    to: /home/vagrant/code/Laravel/public

databases:
  - homestead

features:
  - mariadb: false
  - ohmyzsh: false
  - webdriver: false

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

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項目了。

建立laravel項目的方式有兩種。一種是在本地直接建立,一種是進入虛擬機建立。其本質都是同樣的。

在虛擬機建立的步驟以下:

執行vagrant ssh登錄虛擬機。

切換到映射的目錄下,執行composer create-project laravel/laravel Laravel --prefer-dist命令,建立一個名爲 Laravel 的laravel項目。

在瀏覽器中輸入http://192.168.10.10/或者輸入你配置的映射網址,看到Laravel的默認界面就算是成功了。

 

3、目錄結構

根目錄下有以下目錄:

  • 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一籌。

routes目錄下還有一個web.php文件,這裏面管理着頁面路由。這是最傳統的服務端MVC思想,請求直接返回html的作法。在今天大前端橫行的時代,咱們都在踐行先後端分離,因此這個是用不到的。

 

4、總結

這一章講了laravel框架的環境搭建和laravel框架模板目錄結構的學習。

相關文章
相關標籤/搜索