SlideShare a Scribd company logo
1 of 29
Download to read offline
Package 安裝與使⽤用
范聖佑 Shengyou Fan
新北市樹林國⼩小 (2015/07/07)
適
⽤用
5.1
版
單元主題
• 了解 Laravel 的 Package 概念
• 如何尋找、挑選合適的 Laravel Package
• ⽰示範使⽤用 Composer 安裝 Laravel Package
Package	
  概念簡介
什麼是 Package?
• 在開發程式時,往往希望可以直接使⽤用別⼈人已經寫
好的函式庫,不⽤用重新發明輪⼦子。簡單來說,
Package 就是 Laravel 的擴充程式,透過安裝 Package
就可以直接使⽤用別⼈人寫好的功能,加快開發速度
• Laravel Package 的概念與 Symfony 的 Bundle 相同,
若使⽤用過 Ruby on Rails 的話,就跟 Gems 的⽤用法⼀一
樣
• 在 Laravel 3.* 時叫 Bundle,4.0 以後改稱 Package
• 本單元將⽰示範安裝 Package 來協助後續的開發⼯工作
何處尋找 Package?
• 透過搜尋引擎尋找:
- Google (先⽤用 laravel + package + 關鍵字縮⼩小範圍)
- Packagist (全 PHP 的元件都在上⾯面)
- Packalyst (只列出 Laravel 可⽤用的)
• 查其他開發者的部落格⽂文章推薦
• 聽 ⼤大神/同事/朋友 的推薦
• 看別⼈人的 Open Source 專案裡有⽤用到哪些?
Packagist
https://packagist.org/
Packalyst
http://packalyst.com/	
  
如何選擇 Package?
• 參考 Packagist 上的數值做參考指標
• 看 Package 的作者是誰?
• 聽同事/社群/朋友的推薦、部落格的介紹
• ⾃自⼰己動⼿手試:
- 開啟數個乾淨的 Laravel 專案
- 把待評估的 Package 分別獨⽴立安裝測試
- 選⼀一個最合意的來使⽤用
安裝/使⽤用	
  Package
如何安裝 Package?
• 仔細閱讀 README
• 上 Packagist 上查詢欲安裝的版本
• 到 Packagist Semver Checker 測試版本設定值
• 調整 composer.json
• 執⾏行 composer	
  validate/update
• 設定 ServiceProvider、Alias (視需求)
• 發佈 config 檔 (視需求)
• 更新 DB 結構 (視需求)
⽰示範安裝的 Packages
• "guidovanbiemen/laravel-­‐whoops":	
  "^1.0"
- 整合 whoops 錯誤訊息處理套件⾄至 Laravel 5.1
• "barryvdh/laravel-­‐debugbar":	
  "^2.0"
- 在 Laravel 開發過程中提供除錯訊息的功能列
編輯 composer.json
"require":	
  {	
  
	
   "php":	
  ">=5.5.9",	
  
	
   "laravel/framework":	
  "5.1.*",	
  
	
   "guidovanbiemen/laravel-­‐whoops":	
  "^1.0",	
  
	
   "barryvdh/laravel-­‐debugbar":	
  "^2.0"	
  
},	
  
"require-­‐dev":	
  {	
  
	
   "fzaninotto/faker":	
  "~1.4",	
  
	
   "mockery/mockery":	
  "0.9.*",	
  
	
   "phpunit/phpunit":	
  "~4.0",	
  
	
   "phpspec/phpspec":	
  "~2.1"	
  
},
$	
  composer	
  validate
檢查	
  composer.json	
  是否正確
composer	
  validate
• 只要有更新 composer.json 檔,請務必⽤用 validate 指
令,由 Composer 驗證格式無誤
• 若填寫的資料有問題,Composer 會⾃自動提供對應的
建議或參考⽂文件位置
• 範例:
$	
  composer	
  validate
$	
  composer	
  update
安裝套件並更新	
  composer.lock	
  檔
composer	
  update
• 若專案需要新增/更新套件時,可透過這個指令,讓
Composer ⾃自動更新/安裝所有相依套件
• Composer 會⾃自動取得所有套件資訊,並在計算相依
性後,決定此次更新要安裝的各套件版本後下載安
裝,最後更新 composer.lock 檔
• 範例:
$	
  composer	
  update
安裝/更新套件
使⽤用 composer	
  update 指令
設定 Providers 及 Aliases
編輯	
  config/app.php
[	
  
	
  	
  'providers'	
  =>	
  [	
  
	
  	
  	
  	
  /*	
  略...	
  */	
  
	
  	
  	
  	
  'GvbWhoopsServiceProvider',	
  
	
  	
  	
  	
  'BarryvdhDebugbarServiceProvider',	
  
	
  	
  ],	
  
	
  	
  'aliases'	
  =>	
  [	
  
	
  	
  	
  	
  /*	
  略...	
  */	
  
	
  	
  	
  	
  'Debugbar'	
  =>	
  'BarryvdhDebugbarFacade',	
  
	
  	
  ],	
  
];
驗證安裝結果
• guidovanbiemen/laravel-whoops
- 程式錯誤時,會出現 whoops 的 stack trace 畫⾯面
- 但若是 HTTP 相關的錯誤 (404) 則不會處理
• barryvdh/laravel-debugbar
- 若 .env 檔內的 APP_DEBUG 為 true 時,網⾴頁下⽅方
會出現除錯⼯工具列
- 除錯⼯工具列可展開、縮⼩小,可以查詢程式運⾏行所使
⽤用的 views、資料庫查詢紀錄…等
Laravel 預設錯誤畫⾯面
whoops 除錯畫⾯面
debugbar 功能列
依環境設定載⼊入套件
• 有些套件只想在開發時期使⽤用,正式上線後不需要
在正式機上安裝
• 可以將套件安裝為開發⽤用套件,並在 Laravel 指定在
特定環境底下才載⼊入使⽤用:
- 先將套件在 composer.json 內設定為 require-­‐dev
- 在 Laravel 的 AppServiceProvider 內設定載⼊入條件
- 調整 .env 內的設定,測試環境切換效果
- 在正式機上安裝時,使⽤用 -­‐-­‐no-­‐dev 略過開發套件
的安裝
設定 composer.json
• 在 composer.json 裡,將只有開發才需要的套件,寫
在 require-dev 的區段內:
//	
  composer.json	
  
{	
  
	
   "require":	
  {	
  
	
   	
   /*	
  ⼀一定會安裝的套件	
  */	
  
	
   },	
  
	
   "require-­‐dev":	
  {	
  
	
   	
   /*	
  只有在	
  dev	
  mode	
  才會安裝的套件	
  */	
  
	
   },	
  
}
設定載⼊入 Providers
• 將原本寫在 config/app.php 裡 providers 區段的套件,
改在 app/Providers/AppServiceProvider.php 裡依環境
設定載⼊入不同套件
//	
  app/Providers/AppServiceProvider.php	
  
public	
  function	
  register()	
  
{	
  
	
   /*	
  中間略	
  */	
  
	
   if	
  ($this-­‐>app-­‐>environment()	
  ==	
  'local')	
  {	
  
	
   	
   /*	
  依環境載⼊入額外的	
  Service	
  Provider	
  */	
  
	
   	
   $this-­‐>app-­‐>register('/*	
  Provider	
  */');	
  
	
   }	
  
}
部署時的安裝與設定
• 當專案部署⾄至正式機時,Composer 的指令要記得加
上 --no-dev 來略過安裝 require-dev 的套件
• 另外,部署後記得將正式機的 .env 檔設定為
production 並將除錯模式關閉
$	
  composer	
  install	
  -­‐-­‐no-­‐dev
//	
  .env	
  
APP_ENV=production	
  
APP_DEBUG=false	
  
/*	
  以下略	
  */
存檔點
• 試著把現在已經可以運作的程式碼加⼊入版本控制內
• 流程提醒:
- working directory > staging area > commit
單元總結
• 在這個單元裡我們學到了些什麼?
- 如何尋找、挑選 Laravel Package 的⽅方法
- 使⽤用 Composer 安裝 Laravel Package
- 在 Laravel 裡設定 Package 的⽅方式
Q & A
歡迎提問討論

More Related Content

What's hot

What's hot (20)

COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
Laravel - 系統全攻略(續)
Laravel - 系統全攻略(續)Laravel - 系統全攻略(續)
Laravel - 系統全攻略(續)
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
Model & Seeding整合
Model & Seeding整合Model & Seeding整合
Model & Seeding整合
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
應用程式部署
應用程式部署應用程式部署
應用程式部署
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
Laravel - 系統全攻略
Laravel - 系統全攻略Laravel - 系統全攻略
Laravel - 系統全攻略
 
使用者認證
使用者認證使用者認證
使用者認證
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 

Viewers also liked

Viewers also liked (14)

PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORM
 
開發流程與工具介紹
開發流程與工具介紹開發流程與工具介紹
開發流程與工具介紹
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作
 
CRUD 綜合應用
CRUD 綜合應用CRUD 綜合應用
CRUD 綜合應用
 
課程簡介
課程簡介課程簡介
課程簡介
 
Route 機制
Route 機制Route 機制
Route 機制
 
使用者認證
使用者認證使用者認證
使用者認證
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
REST to RESTful Web Service
REST to RESTful Web ServiceREST to RESTful Web Service
REST to RESTful Web Service
 

Similar to Package 安裝與使用

[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例
YC Ling
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践
Na Lee
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
ytsolar
 

Similar to Package 安裝與使用 (20)

使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學
 
用Maven管理專案的依賴關係
用Maven管理專案的依賴關係用Maven管理專案的依賴關係
用Maven管理專案的依賴關係
 
[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例[OSDC12]相依性管理 - 以Ruby開發為例
[OSDC12]相依性管理 - 以Ruby開發為例
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
LaravelConf Taiwan 2017 單頁面應用與前後端分離開發
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事
 
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Ansible 101
Ansible 101Ansible 101
Ansible 101
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 

More from Shengyou Fan

[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
Shengyou Fan
 

More from Shengyou Fan (20)

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
 

Package 安裝與使用