給你一個使用 laravel 的理由

66
給你一個使用 Laravel 的理由 shengyou @ PHP 也有 Day (2014.07.03)

Upload: shengyou-fan

Post on 15-Jul-2015

1.150 views

Category:

Software


8 download

TRANSCRIPT

Page 1: 給你一個使用 Laravel 的理由

給你一個使用 Laravel 的理由shengyou @ PHP 也有 Day (2014.07.03)

Page 2: 給你一個使用 Laravel 的理由

本日主題• PHP 近期現況、更新進展• PHP 框架綜覽及框架選擇決策• 選擇 Laravel 的原因• 10 個步驟簡介 Laravel 開發流程• Laravel 學習、開發資源• Q&A 交流

Page 3: 給你一個使用 Laravel 的理由

范聖佑@shengyou

https://www.facebook.com/shengyoufan

得寬科技 研究員Laravel 台灣 版主laravel-dojo 作者

Page 4: 給你一個使用 Laravel 的理由

壞好•易於安裝、佈署、學習•使用者眾、套件多

•函式太多、語法不一致•效能不彰

Page 5: 給你一個使用 Laravel 的理由

• PHP 5.3• Namespaces• Closures

• PHP 5.4• Square bracket array syntax• Built-in web server• Traits

• PHP 5.5• Generators

• PHP 5.6• PHPNG

新‧PHP

Page 7: 給你一個使用 Laravel 的理由

框架綜覽

Page 8: 給你一個使用 Laravel 的理由

框架選擇決策• 官方有大神領頭開發

- 開發方向跟著大環境趨勢- 定期更新、安全性升級- 官方背後有商業公司支援

• 傳教士多

• 社群大、生態系完整

Page 10: 給你一個使用 Laravel 的理由

Laravel Framework• 由 Taylor Otwell 主導開發,目前 4.2 版:

- 參考 Ruby on Rials、ASP.NET MVC 及

Sinatra 的語法和架構,且大量使用

Symfony 元件

• 核心理念:

- 簡單優美的語法,讓開發者愉快的 PHP

框架!

Page 11: 給你一個使用 Laravel 的理由

十個步驟了解 Laravel

1.Installation

2.Artisan

3.Configuration

4.Migration

5.Model

6.Seeding

7.Route

8.View

9.Controller

10.Packages

Page 12: 給你一個使用 Laravel 的理由

開發環境需求• PHP (PHP 5.4 與 mcrypt extension)

• Composer

• 網頁伺服器

• 資料庫 (與 Client App)

• 編輯器 / IDE (與版本控制 Client App)

• 瀏覽器★ 參考:http://laravel.com/docs/installation#server-requirements

Page 13: 給你一個使用 Laravel 的理由

如何建立開發環境• 使用 all-in-one 套件 (初學者)

• 使用官方 homestead (已熟悉 laravel 者)

• 自建開發環境 (進階者)

Page 14: 給你一個使用 Laravel 的理由

1. Installation• 三種方式:

- laravel-installer

- composer

- manual install

★ 參考:http://laravel.com/docs/installation

Page 15: 給你一個使用 Laravel 的理由

建立新專案 - installer

http://youtu.be/RPHB1efVC4c

Page 16: 給你一個使用 Laravel 的理由

建立新專案 - installer

http://youtu.be/RPHB1efVC4c

Page 17: 給你一個使用 Laravel 的理由

建立新專案 - composer

http://youtu.be/qXAGkmyMZQY

Page 18: 給你一個使用 Laravel 的理由

建立新專案 - composer

http://youtu.be/qXAGkmyMZQY

Page 19: 給你一個使用 Laravel 的理由

2. Artisan• $ php artisan {command}

• Laravel 專屬的指令列工具,協助我們完成日常繁瑣工作事務,如:

- 產生 auto-load、清快取、最佳化

- 產生 migration、控制 queue

- 維護模式★ 參考:http://laravel.com/docs/artisan

Page 20: 給你一個使用 Laravel 的理由

Artisan 示範

http://youtu.be/b6oC0rBCV6A

Page 21: 給你一個使用 Laravel 的理由

Artisan 示範

http://youtu.be/b6oC0rBCV6A

Page 22: 給你一個使用 Laravel 的理由

3. Configuration• app/config/{config}.php

- app.php (debug mode, service provider...)

- database.php (mysql...)

- mail.php (gmail, mailgun...)

- queue.php (beanstalkd...)

• 伺服器 root 指向 public

★ 參考:http://laravel.com/docs/configuration

Page 23: 給你一個使用 Laravel 的理由

開發流程• 不同階段的開發流程

[development]開發用、測試用

[local]本機端開發

[staging]階段性發佈

[production]正式上線

每個開發夥伴本機端獨立開發,開發完成後送回版本控制系統

[version control]原始碼管理

定期從版本控制系統取出後,進行整合、單元等測試

專案階段完成後,進行階段性發佈,給客戶測試、確認

所有階段完成後佈署至正式主機,對外公開使用

Page 24: 給你一個使用 Laravel 的理由

Laravel 自動環境偵測• bootstrap/start.php

• ~$ hostname

★ 參考:http://laravel.com/docs/configuration#environment-configuration

Page 25: 給你一個使用 Laravel 的理由

載入環境設定• app/config/{environment}/*.php

- Laravel 會自動根據目前的環境,載入對應的設定檔,覆寫預設設定

• .env.{environment}.php

- Laravel 4.1整合 phpenv 套件,直接將環境變數載入後,覆寫預設設定

★ 參考:http://laravel.com/docs/configuration#protecting-sensitive-configuration

Page 26: 給你一個使用 Laravel 的理由

Configuration 示範

http://youtu.be/KoDhsHsFyeU

Page 27: 給你一個使用 Laravel 的理由

Configuration 示範

http://youtu.be/KoDhsHsFyeU

Page 28: 給你一個使用 Laravel 的理由

4. Migration• 多人開發時困擾

- 每人的開發階段不同、 DB 狀態也不同,整合時無法知道差異

- 若直接修改 DB 沒有紀錄也沒辦法回復

• 解決方案:導入 Migration

Page 29: 給你一個使用 Laravel 的理由

何謂 Migration?• app/database/migrations/{migration}.php

- 所有對 DB 操作的動作,都撰寫對應的程式碼來完成 (Laravel Schema builder)

- 分成 up/down (前進/後退)

- 每個人拿到更新版本後,透過執行

migrate 就可以有相同的 DB 結構,若有問題也可以 rollback 回之前的狀態

★ 參考:http://laravel.com/docs/migrations

Page 30: 給你一個使用 Laravel 的理由

Migration 示範

http://youtu.be/073jUf975Sc

Page 31: 給你一個使用 Laravel 的理由

Migration 示範

http://youtu.be/073jUf975Sc

Page 32: 給你一個使用 Laravel 的理由

5. Model• app/models/{model}.php

- Laravel 裡操作 DB 的 ORM 是 Eloquent

- 一個 resource 對應到 DB 裡的一個 table

- 一個 model 對應到 table 裡的一個 row

- model 是單數、table 是複數

- 從 Eloquent 取出來的東西是 Collection

Page 33: 給你一個使用 Laravel 的理由

Model 示範

http://youtu.be/hbqu1vhy9GI

Page 34: 給你一個使用 Laravel 的理由

Model 示範

http://youtu.be/hbqu1vhy9GI

Page 35: 給你一個使用 Laravel 的理由

6. Seeding• app/database/seeds/{seeder}.php

- 在開發時,往往會需要資料來做顯示、刪除來測試程式,但資料的內容不必是真的,但自己建太累了…

- 透過 Laravel 的 table seeder,可以快速的將假資料倒進資料庫,方便開發

CRUD 這種以資料操作為主的功能★ 參考:http://laravel.com/docs/migrations#database-seeding

Page 36: 給你一個使用 Laravel 的理由

Seeding 示範

http://youtu.be/LsMd8v44Q8o

Page 37: 給你一個使用 Laravel 的理由

Seeding 示範

http://youtu.be/LsMd8v44Q8o

Page 38: 給你一個使用 Laravel 的理由

Seeding with faker 示範

http://youtu.be/70shV6KOcHM

Page 39: 給你一個使用 Laravel 的理由

Seeding with faker 示範

http://youtu.be/70shV6KOcHM

Page 40: 給你一個使用 Laravel 的理由

7. Route• app/routes.php

- Route 就是 App 一條一條的門禁規則,規則內指定每一個路由可以接受的動作 (GET、POST) 及需要傳入的參數

- 從上而下逐一比對。符合就會執行、若找不到就會回傳 404 (Not Found)

- 可搭配 group、prefix、namespace、sub-

domain 做彈性設計★ 參考:http://laravel.com/docs/routing

Page 41: 給你一個使用 Laravel 的理由

Route 示範

http://youtu.be/mYMnh4kpkbU

Page 42: 給你一個使用 Laravel 的理由

Route 示範

http://youtu.be/mYMnh4kpkbU

Page 43: 給你一個使用 Laravel 的理由

8. View• app/views/{view}.blade.php

- 基於 Response 物件,回傳 HTML 頁面內容,並結合專屬的樣板引擎 Blade,方便動態的產生內容

- Blade 可透過繼承主板、覆寫區塊、擴充元件做彈性組合

★ 參考:http://laravel.com/docs/responses

Page 44: 給你一個使用 Laravel 的理由

View 示範 (home)

http://youtu.be/U62hH76XJ5U

Page 45: 給你一個使用 Laravel 的理由

View 示範 (home)

http://youtu.be/U62hH76XJ5U

Page 46: 給你一個使用 Laravel 的理由

View 示範 (show)

http://youtu.be/2ZyjH3DstsA

Page 47: 給你一個使用 Laravel 的理由

View 示範 (show)

http://youtu.be/2ZyjH3DstsA

Page 48: 給你一個使用 Laravel 的理由

9. Controller• app/controllers/{controller}.php

- 將複雜的程式操作邏輯,從 Route 搬到

Controller 以 Class 的方式進行分類以利維護

- Controller 本身即 IoC Container,可自動 dependency injection

★ 參考:http://laravel.com/docs/controllers

Page 49: 給你一個使用 Laravel 的理由

Controller 示範

http://youtu.be/zRRSr9pqEk8

Page 50: 給你一個使用 Laravel 的理由

Controller 示範

http://youtu.be/zRRSr9pqEk8

Page 51: 給你一個使用 Laravel 的理由

10. Package• Package 簡單來說就是 Laravel 的擴充程式,透過安裝 Package 就可以直接使用別人寫好的功能,加快開發速度

• 在 3.0 時叫 Bundle,4.0 以後改稱 Package

• 概念同 Symfony 的 Bundle;Rails 的 Gems

Page 52: 給你一個使用 Laravel 的理由

何處尋找 packages?• 搜尋引擎:

- Laravel Packages Registry

- Packalyst

• 聽 大神/同事/朋友 的推薦

• 看別人的 Open Source 裡用哪些?

更多清單可參考:http://www.laravel-dojo.com/recommend-packages

Page 53: 給你一個使用 Laravel 的理由

如何選擇 package?• 參考 Package 搜尋引擎上的 Downloads、

Trust、Popularity 等數值做參考指標

• 看 Package 的作者是誰?

• 聽別人的推薦、部落格的介紹

• 多試幾個同類型的 Package,找出最順自己手的來用

Page 54: 給你一個使用 Laravel 的理由

如何安裝/使用?• 仔細閱讀 README (確認版本、規格)

• 調整 composer.json / composer update

• 設定 ServiceProvider、Alias (視需求)

• Publish 設定 (視需求)

• Migrate DB (視需求)

以 Sentry 2 為例:https://cartalyst.com/manual/sentry#installation

Page 55: 給你一個使用 Laravel 的理由

Laravel 學習資源• 官方文件

• 參考書籍

• 論壇

• 電台 (Podcast)

• 影片教學 (Screencast)

Page 56: 給你一個使用 Laravel 的理由

Laravel 官方文件• http://laravel.com/docs

- 由官方推出的文件,共分 Guide 及 API

兩種型式,依需求使用

- 推薦使用 Dash 或 devdocs.io 做離線查尋用工具,方便開發使用

Page 57: 給你一個使用 Laravel 的理由

Laravel 參考書籍• Laravel: Code Bright

- 由社群知名作者 Dayle Rees 所撰寫的

Laravel 教學書,推薦入門使用

• Laravel: From Apprentice To Artisan

- 由框架作者 Taylor 親自操刀,說明

Laravel 核心原理及擴充技巧,較適合進階的開發者閱讀

更多清單可參考:http://www.laravel-dojo.com/books

Page 58: 給你一個使用 Laravel 的理由

Laravel 論壇• Laravel.io (http://laravel.io/forum)

- 由社群自主開發、維運的論壇

- 除了論壇功能外,也提供 Pastebin、IRC

聊天室等功能

- 大神級人物不定時出現!追星好地方!

Page 59: 給你一個使用 Laravel 的理由

Laravel 電台• Podcast (http://www.buzzsprout.com/11908)

- 由社群所成立的 Laravel Podcast,不定期發行,目前共有 15 集

- 每一集邀請社群內大神級人物線上聊新聞、開發心得以及…各式八卦,歡迎訂閱練聽力!

更多清單可參考:http://www.laravel-dojo.com/worth-to-subscribe

Page 60: 給你一個使用 Laravel 的理由

Laravel 影片教學• laracasts.com

- 由 Jeffrey Way 所創立的 Laravel 線上教學品牌,採訂閱式付費服務

• tutsplus.com

- 知名線上教學網站,部份內容免費;部份進階內容採單買或訂閱式付費

更多清單可參考:http://www.laravel-dojo.com/screencast

Page 61: 給你一個使用 Laravel 的理由

Laravel 台灣• 中文化官網 (http://bit.ly/twlaravel)

- 目前提供官方文件翻譯

- 歡迎有志之士 fork 回去協助翻譯工作!

• FB 社團 (http://bit.ly/laraveltwfb)

- 不定期分享 Laravel 新聞、教學、討論

- 歡迎加入社團討論!

Page 62: 給你一個使用 Laravel 的理由

Laravel Dojo (道場)• @LaravelDojo (http://bit.ly/laravel-dojo)

- 提供 Laravel 學習資源為主題的教學網站,不定期更新 Laravel 相關內容

- 未來預定結合讀書會活動,鼓勵社群內成員彼此交流、切磋實戰技術

- 歡迎加到定期追蹤清單!

Page 63: 給你一個使用 Laravel 的理由

總結• 使用新版本、好框架、新的開發流程及工具,讓你跟著 PHP 一起升級!

• Laravel 的框架特色及開發流程

• Laravel 的學習資源及社群

• 希望這些能說服你使用 Laravel!

Page 64: 給你一個使用 Laravel 的理由

還是說服不了你…• 考慮其他的 framework 嗎?這裡還有:

- Symfony (@Ricky Su)

- yii (@KeaNy)

- Phalcon (@Rack Lin)

- 自建 framework (@c9s)

• 歡迎多到 PHP 台灣、PHP 也有 Day 討論

Page 65: 給你一個使用 Laravel 的理由

Q & AThanks for listening!

Page 66: 給你一個使用 Laravel 的理由

簡報下載• 當日錄影:http://youtu.be/nMDNWXZ65aQ

• 投影片:http://bit.ly/VJJzdB

• 示範影片:http://bit.ly/1mqcEpg

• 示範原始碼:http://bit.ly/1vE8ji2