經過 PHP 入門到實戰系列的基礎學習,接下來我們就可以正式開始 Laravel 框架的學習和使用了。而這一切都需要從創建一個新的 Laravel 項目開始。
註:本系列教程基於 Laravel 5.7+
1、創建一個新的 Laravel 項目正如官方文檔所言,有兩種方式可以創建一個新的 Laravel 項目,這兩種創建方式都是從命令行執行的:第一種是通過全局的 Laravel 安裝器,另一種是通過 Composer 的 create-project 命令。
推薦使用第一種方式,比較簡單,而執行這兩種方式之前,都需要系統已經安裝過 PHP 和 Composer(如果使用 Valet 或 Laragon 的話,則應該已經安裝過了,如果使用的是 Homestead 或 Laradock 的話,宿主環境也要安裝下,便於後續操作,如果未曾安裝,請參考 Valet 和 Laragon 安裝教程)。
使用 Laravel 安裝器安裝安裝 Laravel 安裝器很簡單,在命令行執行以下命令即可(如果已經安裝過,會自動進行更新):
composer global require laravel/installer
安裝完成後,後續就可以通過 laravel new [項目名稱] 來創建新的 Laravel 項目了:
laravel new blog
該命令會在當前目錄下創建一個新的名為 blog 的應用:
使用 Composer create-project 命令安裝除此之外,還可以通過 Composer 自帶的 create-project 命令來安裝新應用:
composer create-project laravel/laravel blog --prefer-dist
效果和上面使用安裝器安裝的一樣,使用這個方式安裝的一個好處是可以安裝舊版本的 Laravel 項目,比如要安裝 5.6 版本的項目 blog56 ,可以這麼做:
composer create-project laravel/laravel blog56 5.6.* --prefer-dist
安裝完成後,我們來看一下新安裝 Laravel 項目 blog 的目錄結構:
目錄根目錄默認包含以下一級子目錄:
app:存放應用核心代碼,如模型、控制器、命令、服務等
bootstrap:存放 Laravel 框架每次啟動時用到的文件
config:用於存放項目所有配置文件
database:存放資料庫遷移和填充類文件
public:Web 應用入口目錄,用於存放入口文件 index.php 及前端資源文件(CSS、JS、圖片等)
resources:用於存放與非 PHP 資源文件,如視圖模板、語言文件、待編譯的 Vue 模板、Sass、JS 源文件
routes:項目的所有路由文件都定義在這裡
storage:用於存放緩存、日誌、上傳文件、已經編譯過的視圖模板等
tests:存放單元測試及功能測試代碼
vendor:通過 Composer 安裝的依賴包都存放在這裡,通常該目錄會放到 .gitignore 文件裡以排除到版本控制系統之外
註:更多關於目錄結構的信息,可參考官方文檔。
文件.env.example/.env:用於配置環境變量,.env.example 是一個示例模板,而 .env 是真正的配置文件,由於包含敏感信息,通常也將其放到 .gitignore 文件中。
artisan:允許你在項目根目錄下通過 php artisan 執行 Artisan 命令
.gitignore 和 .gitattributes:Git 配置文件
composer.json 和 composer.lock:Composer 配置文件
webpack.mix.js:Laravel Mix Webpack 配置文件,用於編譯和打包前端資源
package.json:配置前端資源依賴和腳本(類似於 composer.json 之於 PHP)
phpunit.xml:PHPUnit 配置文件
server.php:用於通過 php artisan serve 啟動 PHP 內置伺服器進行一些簡單的本地預覽
yarn.lock:類似於 composer.lock 之於 Composer,指定 NPM 包版本
.editorconfig:用於在不同 IDE 或編輯器中維護代碼風格的一致性
3、配置Laravel 應用的一些核心配置,比如資料庫、隊列、郵件等,都位於 config 目錄下,通過配置文件名稱就可以很直觀地甄別出不同的服務配置。這些配置文件都會返回一個數組,數組中的每個值都可以通過配置鍵獲取(配置鍵以配置文件名為前綴,以「.」號分隔數組層級),例如,如果你在 config/services.php 中定義了如下配置:
// config/services.php
return [
'sparkpost' => [
'secret' => env('SPARKPOST_SECRET'),
],
];
然後,你就可以通過 config('services.sparkpost.secret') 來訪問配置值。
如上例所示,所有的因環境而異的變量配置值(尤其是敏感信息)都應該存放到根目錄下的 .env 環境變量文件中:
SPARKPOST_SECRET = xyj_laravelacademy.org
然後在配置文件中通過 env() 輔助函數傳入鍵名 SPARKPOST_SECRET 來獲取,這樣做有兩個好處:一是將敏感信息存放到版本控制系統(如 Git、Svn)之外,提高了系統的安全性;此外還可以方便我們在不同環境中(每個環境有自己獨立的 .env 文件)使用不同的配置值,提高了代碼的復用性和靈活性。
註:更多配置信息請參考官方文檔。
4、運行安裝好 Laravel 項目,了解了目錄結構及其作用,以及如何對項目進行配置後,我們就可以運行這個應用了,啟動方式因開發環境而異,我們在前面的 Homestead、Laradock、Valet 以及 Laragon 中已經分別演示過了,這裡不再贅述,我們以 Laradock 為例,通過配置項目域名為 blog.test,在瀏覽器中訪問 http://blog.test,即可看到應用首頁:
我會將本系列教程代碼提交到 Github 倉庫:https://github.com/nonfu/laravel-tutorial-code,以下是關聯本地分支到 Github 項目主幹並第一次提交代碼的示例操作:
cd blog
git init
git remote add origin https://github.com/nonfu/laravel-tutorial-code
git add .
git commit -m '新建一個Laravel項目'
git branch --set-upstream-to=origin/master master
git pull origin master --allow-unrelated-histories
git push
這樣,就可以在 Github 上看到剛剛提交的代碼了:
5、測試Laravel 開箱提供了基於 PHPUnit 進行單元測試和功能測試的功能,並且為我們做好了基礎配置(phpunit.xml)和示例代碼(位於 tests 目錄下),由於本節並沒有編寫任何代碼,所以可以通過以下命令運行示例測試:
./vendor/bin/phpunit
測試結果通過:
註:我們後續教程將以這篇教程創建的 blog 項目為基礎,且訪問域名為 http://blog.test,後面不再重複聲明這一點。
(全文完)
長按下面的二維碼,即可訂閱學院君最新發布的 Laravel 入門系列教程:
關於本系列教程的更多動態,請點擊頁面左下角的「閱讀原文」連結查看。