Laravel 開發前準備

EwenSal發表於2018-09-21

一、分析需求

分析專案需求,拆分功能模組,分析資料結構

二、開發準備

由於我們接下來的開發都會在 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.*"

file

中間省略掉安裝細節...

file

修改 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',

相關文章