Laravel 工作坊
專案啟動與設定
shengyou @ 彰師大資工系學會 (2014.12.06)
階段任務
• 使用 composer 指令建立一個 Laravel 專案
• 設定 Laravel 環境變數
• 安裝 Laravel 套件 (generator、ide-helper、
faker)
• 綜合演練
啟始 Laravel 專案
啟始 Laravel 專案
• 打開 cmder.exe 切換至 專案目錄
• 用 composer 指令啟始 laravel 專案
$	
  cd	
  C:UwAmpwww
$	
  composer	
  create-­‐project	
  laravel/laravel	
  {your-­‐project-­‐
name}	
  -­‐-­‐prefer-­‐dist
★ 參考:http://laravel.tw/docs/4.2/installation
備用方案
• 直接從 Laravel 官方下載打包好的 zip
• 下載完成後,直接解壓縮,並重新命名資
料夾名稱成專案名稱,再執行以下指令:
http://cabinet.laravel.com/latest.zip
$	
  cd	
  C:UwAmpwww{專案名稱}
$	
  php	
  artisan	
  key:generate
Laravel 目錄結構
• public 是 Document Root
• vendor 是 composer 安裝的套件
• app 是程式核心
Laravel 目錄結構
config 資料夾內放置 Laravel 框架所有的設定 及環境變數值
Laravel 目錄結構
controllers 資料夾內放置所有 controller 的 案
Laravel 目錄結構
database 資料夾內有兩個資料夾,migrations 放所有資料庫操
作相關紀錄;seeds 則放所有假資料產生的 案
Laravel 目錄結構
models 資料夾內放置所有 model 的 案
Laravel 目錄結構
storage 資料夾裡是 Laravel 運作時自動產生的各種 案 (快
取、log…) 一般不用動,但 署時要記得把寫入權限打開
Laravel 目錄結構
views 資料夾內放置所有 view 的 案
Laravel 目錄結構
public 資料夾內放所有公開 案,包括 css, js, favicon,
robots.txt,及程式進入點 index.php
Laravel 目錄結構
vendor 資料夾裡所有的 案都是用 composer 管理,
一般來說不需要動,我們也會在版本控制系統內忽略
了解 composer.json
{
	
   "name":	
  "{vendor}/{package-­‐name}",
	
   "description":	
  "{package	
  description}",
	
   "keywords":	
  ["{keyword1}",	
  "{keyword2}"],
	
   "license":	
  "{license}",
	
   "type":	
  "project",
	
   "require":	
  {
	
   	
   "laravel/framework":	
  "4.2.*"
	
   },
	
  	
  	
  	
  "autoload":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  略...
	
   },
	
  	
  	
  	
  "scripts":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  略...
	
  	
  	
  	
  }
	
   "config":	
  {
	
   	
   "preferred-­‐install":	
  "dist"
	
   },
	
   "minimum-­‐stability":	
  "stable"
}
私有專案用:proprietary
格式:"vendor/package-­‐name":	
  "version"
套件穩定度的設定:
•stable	
  (預設)
•RC
•beta
•alpha
•dev
移除不必要 案
• 專案內的幾個說明 可以移除,包括:
- CONTRIBUTING.md
- readme.md
驗證安裝
• 開啟 UwAmp,確認 Document Root 指向
Laravel 專案的 public,並啟動 Server
• 打開瀏覽器:http://localhost:8000
確認
安裝成功
存 點
• 試著把現在已經可以運作的程式碼加入版
本控制內
• 流程提醒:
- 建立一個新的 存庫
- working directory > staging area > commit
.gitignore
• 有一些 案 (比方說 IDE 的設定 ) 我們不
想要放到版本控制系統裡,希望 git 可以
自動忽略 些 案
• 只要把想忽略的規則寫入 .gitignore 裡並
commit 到 存庫,日後 git 就會自動忽略
些 案
設定 Laravel
各開發階段流程
[ development ]
開發用、測試用
[ local ]
本機端開發
[ staging ]
階段性發
[ production ]
正式上線
每個開發夥伴本機端
獨立開發,開發完成
後送回版本控制系統
[version control]
原始碼管理
定期從版本控制系統
取出後,進行整合、
單元等測試
專案階段完成後,進
行階段性發 ,給客
戶測試、確認
所有階段完成後 署
至正式主機,對外公
開使用
什麼是環境設定?
• 在開發過程中,程式碼會經過數個不同的
開發階段,每個開發階段都會 署在不同
的機器上。也因此,諸如 DB 連線資 等
變數在不同機器上就會有不同的設定
• 環境變數的設計,就是讓程式碼可以動態
的適應不同機器上的不同設定,減少 署
時需手動調整設定的負擔
為什麼要設定環境?
• 以往程式碼 署到不同主機時,就要手動
修改相關的連線資
• Laravel 的環境設定設計,可以讓 Laravel
自動依照不同的主機名稱,自動載入對應
的相關設定,開發者也可自行決定開發階
段的名稱,可搭配自動 署工具,讓 署
工作快速不出錯
如何知道目前的環境
$	
  php	
  artisan	
  env
使用 artisan 指令查尋目前的環境
Laravel 如何偵測環境?
★ 參考:http://laravel.tw/docs/configuration#environment-configuration
‘環境名稱’	
  =>	
  array(‘電腦1’,	
  ‘電腦2’),
在	
  bootstrap/start.php	
  設定
設定語法:
如何查詢電腦名稱?
$	
  hostname
使用 hostname 指令查尋電腦名稱
如何查詢電腦名稱?
使用控制台查尋電腦名稱 (我的電腦 > 內容)
如何設定環境變數?
• app/config/{environment}/*.php
- Laravel 會自動根據目前的環境,載入對
應的設定 ,覆寫 production 的設定
- 只需要複製需要覆寫的設定即可,沒有
設定的則會由 production 的值帶入
- {environment} 名稱可自定,但 testing 保
留給單元測試使用
★ 參考:http://laravel.tw/docs/4.2/configuration#environment-configuration
設定資料庫連線
‘databse’	
  =>	
  ‘blog_local’,
‘username’	
  =>	
  ‘root’,
‘password’	
  =>	
  ‘root’,
將資料庫連線資 改為 MAMP 設定
設定範例:
測試資料庫連線
連線失敗
連線成功
從 phpMyAdmin 確認
新的 migrations 資料表產生
存 點
• 試著把現在已經可以運作的程式碼加入版
本控制內
• 流程提醒:
- working directory > staging area > commit
安裝 Packages
什麼是 Package?
• 在開發程式時,往往希望可以直接使用別
人已經寫好的函式庫,不用重新發明輪子
• Package 就是 Laravel 的擴充程式,透過安
裝 Package 就可以直接使用別人寫好的功
能,加快開發速度
• 個單元將安裝數個 Package 協助開發
何處尋找 Package?
• 透過搜尋引擎尋找:
- Packagist
- Packalyst
• 聽 大神/同事/朋友 的推薦
• 看別人的 Open Source 裡有用到 些?
如何安裝 Package?
• 仔細閱讀 README (確認版本、規格)
• 調整 composer.json / composer update
• 設定 ServiceProvider、Alias (視需求)
• Publish 設定 (視需求)
• Migrate DB (視需求)
★ 以 Generator 為例:https://github.com/JeffreyWay/Laravel-4-Generators/
要安裝的 Packages
• way/generators
- Laravel 各種 Class 案產生器
• barryvdh/laravel-ide-helper
- 從原始碼產生編輯器語法補完
• fzaninotto/faker
- 產生資料庫假資料使用
安裝額外套件
• 編輯 composer.json
• 更新套件
$	
  composer	
  update
"require":	
  {
	
   "laravel/framework":	
  "4.2.*"
},
"require-­‐dev":	
  {
	
   "way/generators":	
  "~2.0",
	
   "barryvdh/laravel-­‐ide-­‐helper":	
  "v1.11.3",
	
   "fzaninotto/faker":	
  "v1.4.0"
},
"autoload":	
  {
★ 套件查詢:https://packagist.org/
更新套件
使用 composer update 指令
設定 Service Provider
依套件指示設定 Service Provider
測試安裝結果
確認出現對應的 artisan 指令
artisan ide-helper:generate
• 掃描目前的專案目錄,針對每個類別產生
編輯器可用的提示
- 執行完畢後,會在專案目錄底下產生一
個 _ide_helper.php 的 案 (可加
入 .gitignore裡)
• 範例:
$	
  php	
  artisan	
  ide-­‐helper:generate
存 點
• 試著把現在已經可以運作的程式碼加入版
本控制內
• 流程提醒:
- working directory > staging area > commit
綜合演練
• 用 SourceTree 啟動一個新的 存庫
• 用 cmder + composer 啟動一個新專案
• 在 Netbeans 裡輸入專案
• 設定 Laravel 及安裝 Laravel 套件
• 設定/啟動 UwAmp
• 瀏覽器裡預覽
問與答
學員可開始練習、實作
單元小結
• 在 個單元裡,我們說明如何透過
composer 啟動一個 Laravel 專案,並設定
Laravel 環境變數、安裝套件
• 下一個單元,我們將學習如何使用 Laravel
的 migration 功能進行資料庫操作

專案啟動與設定