SlideShare une entreprise Scribd logo
1  sur  90
Télécharger pour lire hors ligne
使用 Laravel 的前與後
shengyou @ 彰師大資工系學會(2014.11.27)
簡報主題
• 透過使用 Laravel Framework 完成同樣的專
題內容,比較使用框架與否的差異:
- 使用 Homestead
- 啟始 Laravel
- 環境變數設定
- Artisan 指令
- 建立 Migration/Seeding
- 設定 Route
- 連結 Controller
- 使用樣板引擎
- 使用 ORM/Model
- 使用 Package
使用 Homestead
什麼是 Homestead?
• 隨著開發工具 趨複雜,為降低建置開發
環境的難度、減少建置時間、並提供完整
工具鏈,Laravel 官方推出名為 Homestead
的虛擬機器方案
• Homestead 2.0 更整合了 Composer,讓
homestead 的使用、操作更加簡便
★ 參考:http://laravel.tw/docs/4.2/homestead
為什麼要 Homestead?
• 透過使用虛擬機器,可直接在開發機上模
擬上線主機環境,確保程式可 署
• 透過Virtual Box +Vagrant 的組合,讓複雜
的虛擬機器安裝、複製、散 、更新變得
更加容易,而 Laravel 官方透過 個方式
直接提供開發者一整個開發工具包
有 些好料?
• Ubuntu 14.04
• PHP 5.6 (with mcrypt)
• HHVM
• Nginx
• MySQL
• Postgres
• Node (With Bower,
Grunt, and Gulp)
• Redis
• Memcached
• Beanstalkd
• Laravel Envoy
• HipChat + Slack
怎麼使用?
• 安裝Virtual Box
• 安裝Vagrant
• 安裝 composer 套件
• 透過指令 啟動/暫停 homestead
★ 參考:http://mattstauffer.co/blog/introducing-laravel-homestead-2.0
簡要示範
安裝 homestead
簡要示範
啟始 homestead 設定
簡要示範
設定 Homestead.yaml
簡要示範
啟動 homesteadVM
簡要示範
暫停 homesteadVM
Before & After
• 團隊成員各出奇
招、自建開發環境
• 署時可能因為環
境差異而造成程式
碼無法運作
• 統一團隊成員的開發
環境的差異
• 開發環境與上線主機
同步,開發時即可預
測程式 署結果
啟始 Laravel
如何啟始一個專案?
• 使用 Laravel Installer
• 使用 Composer
★ 參考:http://laravel.tw/docs/4.2/installation
簡要示範
使用 Laravel Installer
簡要示範
使用 Composer - P.1
簡要示範
使用 Composer - P.2
Laravel 目錄結構
•Document Root 指向 public
•vendor 是 Composer 套件
•app 是大多數寫程式的位置
Before & After
• 手動管理所有原始
碼 案,若在移
動、複製時出錯就
GG
• 引入套件、升級函
式庫費時辛苦
• 使用 Composer 統一
管理所有元件,安
裝、更新都方便
• 框架目錄結構清楚且
依照慣例,即便新成
員也能無接縫使用
環境變數設定
什麼是環境設定?
• 在開發過程中,程式碼會經過數個不同的
開發階段,每個開發階段都會 署在不同
的機器上。也因此,諸如 DB 連線資 等
變數在不同機器上就會有不同的設定
• 環境變數的設計,就是讓程式碼可以動態
的適應不同機器上的不同設定,減少 署
時需手動調整設定的負擔
各開發階段流程
[ development ]
開發用、測試用
[ local ]
本機端開發
[ staging ]
階段性發
[ production ]
正式上線
每個開發夥伴本機端
獨立開發,開發完成
後送回版本控制系統
[version control]
原始碼管理
定期從版本控制系統
取出後,進行整合、
單元等測試
專案階段完成後,進
行階段性發 ,給客
戶測試、確認
所有階段完成後 署
至正式主機,對外公
開使用
為什麼要設定環境?
• 以往程式碼 署到不同主機時,就要手動
修改相關的連線資
• Laravel 的環境設定設計,可以讓 Laravel
自動依照不同的主機名稱,自動載入對應
的相關設定,開發者也可自行決定開發階
段的名稱,可搭配自動 署工具,讓 署
工作快速不出錯
Laravel 如何偵測環境?
• bootstrap/start.php
• ~$ hostname
★ 參考:http://laravel.com/docs/configuration#environment-configuration
Laravel 自動環境偵測
如何設定環境變數?
• app/config/{environment}/*.php
- Laravel 會自動根據目前的環境,載入對
應的設定 ,覆寫預設設定
• .env.{environment}.php
- Laravel 4.1 開始整合 phpenv 套件,直接
將環境變數載入後,覆寫預設設定
★ 參考:http://laravel.tw/docs/configuration#protecting-sensitive-configuration
★ 參考:http://laravel.tw/docs/4.2/configuration#environment-configuration
簡要示範
設定 debug mode
簡要示範
設定 mysql connections
Before & After
• 程式碼 署到不同
主機時,都要手動
修改相關設定值
• 直接將機敏資 寫
在程式碼放到版本
控制裡,有曝露風
險
• 透過環境設定,程式
碼可以自動適應所在
主機的相關設定
• 透過 phpenv 動態載
入,機敏資 不會曝
露在版本控制的原始
碼內
Artisan 指令
什麼是 artisan?
• Laravel 專屬的指令列工具,協助我們完成
日常繁瑣工作事務,如:
- 產生 auto-load、清快取、最佳化
- 產生 migration、控制 queue
- 維護模式
為什麼要用 artisan?
• 自動幫忙產生想要的 物件 鷹架, 可以少
打一些程式碼
• 啟動常用的工具、最佳化 Laravel
• 簡單來說,就是因為 懶 我們是高效率的
攻城獅
如何使用 artisan?
• $ php artisan {command}
• 常用的指令有:
- env、 dump-autoload、optimize
- controller:make、migrate:make
- migrate、db:seed
簡要示範
artisan 常用指令示範
Before & After
• 所有程式碼維護的
工作都要由自己手
動處理
• 所有關於框架的鎖事
都可以由指令列協助
我們完成
建立 Migration/Seeding
什麼是 Migration?
• 所有對 DB 操作的動作,都 寫對應的程
式碼來完成 (Laravel Schema builder)
• 分成 up / down (前進/後退)
• 每個人拿到更新版本後,透過執行
migrate 就可以有相同的 DB 結構,若有問
題也可以 rollback 回之前的狀態
★ 參考:http://laravel.tw/docs/migrations
什麼是 Seeding?
• 在開發時,往往會需要資料來做顯示、刪
除來測試程式,但資料的內容不必是真
的,但自己建太累了…
• 透過 Laravel 的 table seeder,可以快速的
將假資料倒進資料庫,方便開發 CRUD
種以資料操作為主的功能
★ 參考:http://laravel.tw/docs/migrations#database-seeding
為什麼要用 M & S?
• 多人開發時,因為新功能而需要修改 DB
結構,若沒有 Migration 則其他人就無法
知道 DB 的差異; 署時,DB 的修改沒
有紀錄、若有狀況也無從回復
• 用 Seeding 後,可以快速的讓 DB 內有測
試資料可以使用,寫 DB 操作時效率大增
怎麼做 Migration?
使用 artisan 產生 migrate
怎麼做 Migration?
透過 Laravel Shema Builder 操作 DB 變更
怎麼做 Migration?
透過 artisan 執行 migrate
怎麼做 Migration?
透過 artisan 執行 migrate
怎麼做 Seeding?
先寫 Seed Class (產生完 Class 記得 dump-autoload)
怎麼做 Seeding?
在 DatabaseSeeder 內呼叫要執行的 Seed Class
怎麼做 Seeding?
使用 artisan 執行 db:seed
Before & After
• 所有的 DB 操作沒
有紀錄,多人開發
時常常會因為 DB
不同步炸掉
• 開發時,光產生測
試資料就花掉很多
時間
• 所有 DB 修改都有紀
錄,同步方便且可復
原
• 可快速產生假資料,
也可快速清空資料
庫,方便開發寫資料
操作 (CRUD)功能
設定 Route
什麼是 Route?
• Route 就是 App 一條一條的門禁規則,規
則內指定每一個路由可以接受的動作
(GET、POST) 及需要傳入的參數
• 從上而下逐一比對。符合就會執行、若找
不到就會回傳 404 (Not Found)
• 可搭配 group、prefix、namespace、sub-
domain 做彈性設計
★ 參考:http://laravel.tw/docs/routing
為什麼要用 Route?
• Document Root 指定在 public,透過框架
進入點 (index.php) 統一管理所有路由,增
加程式碼安全性
• 透過 Route 設計,所有 App 可使用的路由
就一目了然,若出錯時也方便除錯
怎麼設定 Route?
app/routes.php
檢查 Route 設定
用 artisan 指令列出目前的 Route 設定
Before & After
• 所有的頁面都要手
動新增一個 *.php
案
• 每一個 *.php 案
還要針對可接受的
http method 做判斷
• 統一由 Route 管理
App 內所有的路由,
增加開發的效率與應
用程式安全性
連結 Controller
什麼是 Controller?
• 依照 MVC 原理,處理 Route 送過來的資
料,並依應用程式邏輯操作 Model 改變
存的資料
• 所有應用程式的邏輯由 Controller 統一處
理,Controller 本身依功能命名
★ 參考:http://laravel.tw/docs/controllers
為什麼用 Controller?
• 將應用程式的裡將複雜的程式操作邏輯,
獨立成 Class 以利維護,從 Class、
Function 的命名就可以大致猜出其功能
• Laravel Controller 本身即 IoC Container,
可自動 dependency injection
怎麼產生 Controller?
使用 artisan 指令產生 Controller Class
把 Route 導入
app/routes.php
Controller 怎麼寫?
對應 function 名稱內寫操作邏輯
Before & After
• 程式的操作邏輯總
是寫在 *.php 的開
頭,程式邏輯、DB
操作、資料顯示全
混在一起的「義大
利麵式」寫法
• 程式操作邏輯分門別
類由不同的 Class 處
理,Class 內各
Function 也只專注處
理一個邏輯,在分工
與維護上都更清楚
使用樣板引擎
什麼是/為什麼要樣板?
• 一個 MVC 網路應用程式直接跟使用者互
動的部份就是View
• 在實作頁面時,很多頁面的 HTML DOM
其實是重複的,為減少維護多份重複的原
始碼,並讓開發更簡便,我們需要透過樣
板將頁面相同的區塊獨立出來
Laravel 的樣板引擎
• Laravel 針對寫網路應用程式一定需要的樣
板功能提供了 Blade 個樣板引擎
• 透過 Blade 語法,可以讓頁面有親屬關
係,讓樣板繼承 (template inheritance)變得
簡單,且可將頁面重複的部份拆分成區塊
(section),再引入至頁面對應的位置即可
★ 參考:http://laravel.tw/docs/4.2/templates
怎麼用 Blade?
• 所有的 view 都統一放在 views 資料夾底下
• 依照慣例,主樣板會放在 layouts 資料夾
內;子樣板會放在該 resource 資料夾內
• blade 樣板的副 名命名為 *.blade.php
設定主樣板
先定義一個主樣板的 HTML 頁面框架
設定主樣板
先定義一個主樣板的 HTML 頁面框架
設定主樣板
先定義一個主樣板的 HTML 頁面框架
子樣板繼承主樣板
子樣板繼承主樣板
Controller 回傳View
在 Controller 裡宣告回傳 view 的名稱
Before & After
• 不同頁面裡相同的
區塊 能用 include
的方式在不同頁面
引入、彈性較低
• 透過 Blade 很容易的
將網頁拆成主板、子
板及區塊
• 不同區塊經拆解後,
容易重複使用,開發
時 需專注在區塊內
即可
使用 ORM / Model
什麼是 ORM?
• ORM = Object-relational mapping
• 簡單來說,就是把資料庫裡一筆一筆的資
料變成物件來操作。 些物件透過繼承可
以增加更多的方法,讓資料庫的操作
(CRUD) 更加直覺、方便
為什麼要用 ORM?
• 原本在寫資料庫查詢時,往往需要自行依
照需求下 SQL 查詢式,當查詢式變長、
關聯日趨複雜時,很難直覺了解該查詢式
的作用
• 自行處理 SQL 查詢式時,也需確認輸入
的字串是否都有 Escape 以防安全性疑慮
Laravel 的 Eloquent
• Eloquent 是 Laravel 提供的 ORM 工具,依
照以下慣例,讓 DB 操作變得容易:
- 一個 resource 對應到 DB 裡的一個 table
- 一個 model 對應到 table 裡的一個 row
- model 是單數、table 是複數
- 從 Eloquent 取出來的東西是 Collection
怎麼設定 Model?
在 Model 裡設定 DB 名稱 (可依照慣例)
怎麼設定關聯?
設定關聯 function
怎麼操作 ORM?
取出前 5 筆文章 (Laravel 支援自動分頁 !)
在View 裡呈現
在 view 裡將 model 的資料印出來
Before & After
• 所有跟資料庫操作
相關的動作都要自
己下 SQL 語法
• 在組合 SQL 語法
時,要小心任何有
安全性疑慮的字串
• 透過 Eloquent,操
作 DB 就像寫敘述
句一樣,資料表間
的關聯也很直覺
• 本身就已針對安全
性做防禦,減少初
學者可能的錯誤
使用 Package
什麼是 Package?
• Package 簡單來說就是 Laravel 的擴充程
式,透過安裝 Package 就可以直接使用別
人寫好的功能,加快開發速度
• 在 3.0 時叫 Bundle,4.0 以後改稱 Package
• 概念同 Symfony 的 Bundle;Rails 的 Gems
何處尋找 Package?
• 搜尋引擎:
- Packagist
- Packalyst
• 聽 大神/同事/朋友 的推薦
• 看別人的 Open Source 裡用 些?
如何選擇 Package?
• 參考 Package 搜尋引擎上的 Downloads、
Trust、Popularity 等數值做參考指標
• 看 Package 的作者是誰?
• 聽別人的推薦、部落格的介紹
• 多試幾個同類型的 Package,找出最順自
己手的來用
如何安裝 Package?
• 仔細閱讀 README (確認版本、規格)
• 調整 composer.json / composer update
• 設定 ServiceProvider、Alias (視需求)
• Publish 設定 (視需求)
• Migrate DB (視需求)
★ 以 Sentry 2 為例:https://cartalyst.com/manual/sentry#installation
設定 composer.json
設定 composer.json 內的 package 名稱
更新套件
使用 composer update 指令
設定 Service Provider
依套件指示設定 Service Provider
Before & After
• 想要使用別人寫好
的函式庫,要手動
下載、安裝、整合
進自己的程式碼
• 透過 Laravel Package
的設定,別人已經寫
好的函式庫可以迅度
的整合到自己的專案
裡,站在巨人的肩膀
上
小結
• 透過把相同專案用 Laravel 再實作一次做
為前、後比較,讓我們了解使用框架後在
開發上帶來的好處與便利性
• 希望 樣能說服你嘗試 Laravel!
Q & A
Thanks for listening!

Contenu connexe

Tendances

[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南Shengyou Fan
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方do_aki
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用Lorex L. Yang
 
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較hiroi10
 
網頁三本柱之Html與css
網頁三本柱之Html與css網頁三本柱之Html與css
網頁三本柱之Html與cssAaron King
 
[JCConf 2020] 用 Kotlin 跨入 Serverless 世代
[JCConf 2020] 用 Kotlin 跨入 Serverless 世代[JCConf 2020] 用 Kotlin 跨入 Serverless 世代
[JCConf 2020] 用 Kotlin 跨入 Serverless 世代Shengyou Fan
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜Shengyou Fan
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具Shengyou Fan
 
Maintainable Software Architecture in Haskell (with Polysemy)
Maintainable Software Architecture in Haskell (with Polysemy)Maintainable Software Architecture in Haskell (with Polysemy)
Maintainable Software Architecture in Haskell (with Polysemy)Pawel Szulc
 
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係Yoshio Hanawa
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本Lorex L. Yang
 
PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解するWataru Terada
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Moriyoshi Koizumi
 

Tendances (20)

[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
 
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較
 
網頁三本柱之Html與css
網頁三本柱之Html與css網頁三本柱之Html與css
網頁三本柱之Html與css
 
[JCConf 2020] 用 Kotlin 跨入 Serverless 世代
[JCConf 2020] 用 Kotlin 跨入 Serverless 世代[JCConf 2020] 用 Kotlin 跨入 Serverless 世代
[JCConf 2020] 用 Kotlin 跨入 Serverless 世代
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
HTML 語法教學
HTML 語法教學HTML 語法教學
HTML 語法教學
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
Maintainable Software Architecture in Haskell (with Polysemy)
Maintainable Software Architecture in Haskell (with Polysemy)Maintainable Software Architecture in Haskell (with Polysemy)
Maintainable Software Architecture in Haskell (with Polysemy)
 
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本
 
PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解する
 
HTTP2入門
HTTP2入門HTTP2入門
HTTP2入門
 
Git由超淺入超深
Git由超淺入超深Git由超淺入超深
Git由超淺入超深
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
 

En vedette

選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅Shengyou Fan
 
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊Shengyou Fan
 
wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境Shengyou Fan
 
成為全能 php 攻城獅
成為全能 php 攻城獅成為全能 php 攻城獅
成為全能 php 攻城獅Shengyou Fan
 
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)Chen Cheng-Wei
 
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)Chen Cheng-Wei
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用Shengyou Fan
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制Shengyou Fan
 

En vedette (11)

選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅
 
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
 
wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境
 
成為全能 php 攻城獅
成為全能 php 攻城獅成為全能 php 攻城獅
成為全能 php 攻城獅
 
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
 
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 

Similaire à 使用 laravel 的前與後

Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作Shengyou Fan
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定Shengyou Fan
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學Cloud Wu
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由Shengyou Fan
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作Shengyou Fan
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011Ching Yi Chan
 
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
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletJustin Lin
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
 

Similaire à 使用 laravel 的前與後 (20)

Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 

Plus de Shengyou Fan

[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 打造多平台應用程式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
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀Shengyou Fan
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能Shengyou Fan
 
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 2023Shengyou Fan
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀Shengyou Fan
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台Shengyou Fan
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇Shengyou Fan
 
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 DatabaseShengyou Fan
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園Shengyou Fan
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin MultiplatformShengyou Fan
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率Shengyou Fan
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用Shengyou Fan
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具Shengyou Fan
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS AggregatorShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON APIShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin ServerlessShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置Shengyou Fan
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手Shengyou Fan
 
Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Shengyou Fan
 

Plus de 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 第一章導讀
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
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] 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 提升開發、發佈及服務監控效率
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
 
老派浪漫:用 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 - 開發環境建置
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手
 
Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章
 

使用 laravel 的前與後