一、分析需求
分析專案需求,拆分功能模組,分析資料結構
二、開發準備
由於我們接下來的開發都會在 Homestead 上進行,因此,在開始本章教程之前,請保證你的 Homestead 虛擬機器已成功開啟並登入。使用下面命令來啟動和登入 Homestead:
> cd ~/Homestead && vagrant up
> vagrant ssh
在虛擬機器中進入 Code 資料夾:
$ cd ~/Code
注意:本書中因為虛擬機器的存在,我們會有兩個執行命令列的環境,一個是主機,另一個是 Homestead 虛擬機器。我們會在命令的前面使用『命令列提示符』來區分主機和 Homestead。請記住以
>
開頭的命令是執行在主機裡,$
開頭的命令是執行在 Homestead 虛擬機器裡。詳見 寫作約定 - 命令列提示符。
Composer 加速
在建立專案之前,我們先在虛擬機器中執行以下命令來實現 Composer 安裝加速 :
$ composer config -g repo.packagist composer https://packagist.laravel-china.org
建立 LaraBBS 應用
下面讓我們來使用 Composer 建立一個名為 LaraBBS 的應用,後面我們將基於這個應用做更多的功能完善:
$ cd ~/Code
$ composer create-project laravel/laravel larabbs --prefer-dist "5.5.*"
中間省略掉安裝細節...
修改 hosts
每個 Laravel 專案建立完成後的第一步,即是對 Homestead 進行配置,讓應用能在 Homestead 的開發環境上跑起來。
為了方便記憶,一般我們都會將 IP 對映為域名,我們能夠通過設定 hosts 檔案來指定 IP 與域名之間的對映關係,由於我們在 Homestead 上預設使用 192.168.10.10
來作為虛擬機器的 IP 的地址,因此我們需要在系統的 hosts
檔案中將域名指向該 IP 上。
Mac 下開啟 Hosts 檔案:
> subl /etc/hosts
Windows 下開啟 Hosts 檔案:
> subl C:/Windows/System32/Drivers/etc/hosts
Windows 下,如果你沒有整合
subl
命令的話, 請使用編輯器直接開啟檔案,檔案路徑在C:\Windows\System32\Drivers\etc\hosts
。
檔案成功開啟後,在 hosts
檔案最後面新增下面一行以完成設定:
192.168.10.10 larabbs.test
新增站點
如果你安裝了 Sublime Text,可通過執行下面命令開啟 Homestead.yaml
檔案:
> subl ~/Homestead/Homestead.yaml
在 Homestead.yaml
檔案中新增 larabbs
應用的 sites
和 databases
的相關設定:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Code
to: /home/vagrant/Code
sites:
- map: homestead.test
to: /home/vagrant/Code/Laravel/public
- map: larabbs.test # <--- 這裡
to: /home/vagrant/Code/larabbs/public # <--- 這裡
databases:
- homestead
- larabbs # <--- 這裡
variables:
- key: APP_ENV
value: local
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 93000
# to: 9300
# - send: 7777
# to: 777
# protocol: udp
我們主要設定了 sites
和 databases
兩項。 sites
會將域名 larabbs.test
對映到虛擬機器的 /home/vagrant/Code/larabbs/public
資料夾上,而 databases
則為新建立的專案指定資料庫名。
重啟虛擬機器
在我們每次對 Homestead.yaml
檔案進行了更改之後,都需要執行下面命令來使其更改生效:
> cd ~/Homestead && vagrant provision && vagrant reload
vagrant provision
是命令 Vagrant 重新載入Homestead.yaml
配置;vagrant reload
是重啟虛擬機器使更改生效。
.env 檔案
接下來,我們還需要對應用根目錄下的 .env
檔案進行設定,為應用指定資料庫名稱 larabbs
。
.env
.
.
.
DB_DATABASE=larabbs
.
.
.
在 .env
檔案中,除了 DB_DATABASE
之外還有其它的設定資訊,接下來讓我們對裡面的幾項配置資訊進行簡單講解。
一般來說,在進行實際應用的開發過程中,應用會擁有不同的執行環境,通常會有以下環境:
- 本地開發環境
- 測試環境
- 生產環境
在不同環境中,我們可能會使用不同的資料庫或郵件傳送驅動等配置,這時候則需要通過 .env
檔案來針對不同的執行環境作不同的設定。比如上面我們所編輯的 .env
檔案配置將應用在本地的開發環境(local)上。
.env
支援對應用進行簡單的配置,比如你可以通過 APP_ENV
來設定當前應用的執行環境,使用 APP_DEBUG
來設定是否在應用報錯時顯示除錯資訊,使用 APP_KEY
來生成應用的金鑰用於加密一些較為敏感的資料。
APP_ENV=local
APP_DEBUG=true
APP_KEY=your_app_key
我們也可以對資料庫的連線方式、資料庫名、使用者名稱密碼等做相關配置:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=larabbs
DB_USERNAME=homestead
DB_PASSWORD=secret
快取、會話、佇列等驅動的相關配置資訊:
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
Redis 相關的配置資訊:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
郵件相關的配置資訊:
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
在完成對 .env
檔案的設定後,我們便可以通過傳參給 getenv
方法來獲取到 .env
檔案中指定的值,如呼叫 getenv('APP_ENV')
將返回 local
。
Git 程式碼版本控制
為了在接下來更好的追蹤專案程式碼的更改,我們還需要將新建的 Laravel 專案納入到 Git 版本管理中:
$ cd ~/Code/larabbs
$ git init
$ git add -A
$ git commit -m "Initial commit"
我們前面已討論過關於使用 GitHub 的種種好處,而現在是我們開始正式應用它的時候了。熟悉一個東西最快的方法就是不斷訓練,不斷重複,因此本教程接下來專案構建的程式碼都將統一託管到 GitHub 上,以便讓你對 GitHub 的使用更加熟悉。現在,我們需要在 GitHub 上新建一個名為 larabbs
的專案 點選建立新專案,並將程式碼推送上去:
注意請把下面的 <username>
替換為你的使用者名稱。
$ git remote add origin git@github.com:<username>/larabbs.git
$ git push -u origin master
統一程式碼風格
為了保證我們的程式碼風格一致,以避免引起不必要的歧義,我們在『開發環境佈置』課程中,已經安裝了 EditorConfig 外掛。現在我們還需要在 Laravel 應用的根目錄下新增 .editorconfig
檔案,並寫入如下的配置資訊:
.editorconfig
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
# Change these settings to your own preference
indent_style = space
indent_size = 4
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false
[*.{js,html,blade.php,css,scss}]
indent_style = space
indent_size = 4
[*.md]
trim_trailing_whitespace = false
接著讓我們將該檔案加入到版本控制中。
$ git add -A
$ git commit -m "Add .editorconfig"
存放位置
Laravel 框架的所有配置都儲存在 config
目錄中,每個檔案中包含多個配置選項,每個選項都有說明,你可隨時檢視這些檔案並熟悉都有哪些配置選項可供你使用。
配置檔案
下面是配置檔案的簡單說明:
檔名稱 | 配置型別 |
---|---|
app.php | 應用相關,如專案名稱、時區、語言等 |
auth.php | 使用者授權,如使用者登入、密碼重置等 |
broadcasting.php | 事件廣播系統相關配置 |
cache.php | 快取相關配置 |
database.php | 資料庫相關配置,包括 MySQL、Redis 等 |
filesystems.php | 檔案儲存相關配置 |
mail.php | 郵箱傳送相關的配置 |
queue.php | 佇列系統相關配置 |
services.php | 放置第三方服務配置 |
session.php | 使用者會話相關配置 |
view.php | 檢視儲存路徑相關配置 |
訪問配置值
你可以在應用程式的任何位置使用全域性 config
函式來訪問配置值。配置值的訪問可以使用「點」語法,這其中包含了要訪問的 檔名稱 和 選項 的名稱。還可以指定預設值,如果配置選項不存在,則返回預設值:
$value = config('app.timezone');
要在執行時設定配置值,傳遞一個陣列給 config 函式:
config(['app.timezone' => 'America/Chicago']);
調整配置資訊
現在我們需要調整幾個應用配置資訊。
應用名稱
config/app.php
'name' => env('APP_NAME', 'Laravel'),
此處使用 env()
方法可知其優先讀取 .env
檔案中的 APP_NAME
選項,前往修改為 LaraBBS
:
.env
APP_NAME=LaraBBS
.
.
.
應用連結
config/app.php
'url' => env('APP_URL', 'http://localhost'),
優先讀取 .env
檔案中的 APP_URL
選項,前往修改為以下:
.env
.
.
.
APP_URL=http://larabbs.test
.
.
.
時區
請將選項 timezone
修改為上海的時區:
config/app.php
'timezone' => 'Asia/Shanghai',
預設語言
請將選項 locale
修改為中文:
config/app.php
'locale' => 'zh-CN',