Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

選一個框架當好朋友,讓您成為開心攻城獅

4,214 views

Published on

於 2014/11/27 受邀於 彰化師範大學 資訊工程學系系學會 分享 Laravel Framework,主題分為三段:

1. 選一個框架當好朋友,讓您成為開心攻城獅
2. 使用 Laravel 的前與後
3. 成為全能 PHP 攻城獅

Published in: Technology

選一個框架當好朋友,讓您成為開心攻城獅

  1. 1. 選⼀一個框架當好朋友, 讓您成為開⼼心攻城獅! shengyou @ 彰師⼤大資⼯工系學會(2014.11.27)
  2. 2. 演講主題分配 • 選⼀一個框架當朋友,讓你成為開⼼心攻城獅 • 使⽤用 Laravel 的前與後 • 成為全能 PHP 攻城獅
  3. 3. 范聖佑 @shengyou https://www.facebook.com/shengyoufan 得寬科技 研究員 Laravel 台灣 版主 laravel-dojo 作者
  4. 4. 簡報主題 • 實作模擬:⼀一個 Blog 專題作業 • 不使⽤用框架⾯面臨的問題與瓶頸 • 導⼊入當代開發流程 • MVC 框架綜覽與選擇策略 • Laravel Framework 簡介
  5. 5. 實作模擬 • 模擬實作⼀一個 Blog 專題作業 - 實作⼀一個簡易的 Blog 網站 - 每⼀一篇⽂文章都可以歸屬於某⼀一個分類 - 三種呈現⽅方式:總覽、分類、單⼀一 - 列表型⾴頁⾯面⽀支援分⾴頁瀏覽 有獎問答:簡述您的作法
  6. 6. 警告!葛格沒練過,這 Code 很危險!
  7. 7. 開發流程 • 設計⾴頁⾯面、規劃 DB • 建⽴立開發環境 • 對應每⼀一⾴頁寫出 *.php 檔案 • 與組員協同合作 • 專題佈署
  8. 8. ⾴頁⾯面分配 index.phpcategory.php post.php &category_id= ?page= ?page= ?id= 分類⾴頁 ⾸首⾴頁(總覽) ⽂文章詳細⾴頁
  9. 9. 各出奇招 • WAMP、XAMPP、EasyPHP、AppServ • Microsoft Web Platform 安裝包 • PHP + MySQL + Apache 獨⽴立安裝/設定 • (Mac) MAMP、Homebrew、系統內建 • (Linux) apt-get、compiled from source
  10. 10. DB 規劃
  11. 11. 連接資料庫
  12. 12. 過時的語法 http://php.net/manual/en/function.mysql-connect.php
  13. 13. 修正連線語法 http://php.net/manual/en/mysqlinfo.api.choosing.php
  14. 14. 設定資料庫連線編碼 http://php.net/manual/en/mysqli.set-charset.php
  15. 15. 各程式碼區塊 資料庫連線
  16. 16. 各程式碼區塊 ⽂文章列表
  17. 17. 各程式碼區塊 分類列表
  18. 18. 各程式碼區塊 分⾴頁計算及選單
  19. 19. 整理程式結構 • 把整個程式常⽤用的變數改成常數,獨⽴立在 ⼀一個 config.php 裡,並在各⾴頁引⼊入 • 每⼀一⾴頁要⽤用到的資料庫連線,獨⽴立成⼀一個 檔案,在每⼀一⾴頁引⼊入 • ⾴頁⾯面重複的部份,把每⼀一塊拆成獨⽴立的 *.php 檔案
  20. 20. 協同合作 • 交換專題檔案 - 把原始檔⽤用 zip 打包,⽤用 email 交換;或 是直接共享⼀一個 Dropbox 資料夾 - 從 學⻑⾧長A 那邊拿到⼀一包傳說中超好⽤用的 資料庫連線 Class - 從 學⻑⾧長B 那邊拿到⼀一包聽說也很好⽤用的 樣板⼯工具包
  21. 21. 程式佈署 • 把專題送上線 - 使⽤用學校提供的網路主機 - 在網路上搜尋免費的 php + mysql 空間 - 使⽤用 FTP 軟體,將所有原始碼上傳
  22. 22. 回顧與討論 以上的開發流程是否似曾相識?回想⼀一下⾃自 ⼰己曾經寫過的專題,在開發時有遇到什麼問 題嗎?或是跟同學合作時,有沒有什麼部份 讓你感到困擾?程式佈署⽅方⾯面,有沒有更好 的作法? 有獎問答:請分享您的想法
  23. 23. 開發⾯面的問題 • 使⽤用 懶⼈人包 的開發⼯工具雖然⽅方便,但有 版本過舊、擴充、與線上環境同步等問題 • 程式碼內混雜流程控制、DB 操作、顯⽰示 等動作,在開發上會較不易分⼯工及維護 • 各 Class 沒有統⼀一的載⼊入⽅方式,也沒有管 理相依性的機制,無法建⽴立在前⼈人的基礎 上開發
  24. 24. 維護⾯面的問題 • 在開發過程中,針對資料庫的內容沒有⽅方 便的倒假資料功能,在開發資料庫相關功 能時,無法專注在程式⾯面上 • 沒有統⼀一針對程式錯誤的處理/除錯機制, 也無法透過設定在不同的開發模式底下開 啟/關閉錯誤訊息
  25. 25. 安全性的問題 • 全部程式碼都在 Document Root 底下,增 加原始碼曝露⾵風險 • 資料庫的操作全部靠撰寫 SQL 語法,且 沒有設定對應的安全機制,容易受到攻擊 • 表單傳送沒有對 csrf 進⾏行防禦,容易被可 能的攻擊 try 到 飽/寶…
  26. 26. 合作⾯面的問題 • 資料庫的變更全部靠⼿手動直接操作資料庫 (多⼈人開發時,成員無法取得新版結構) • 每⼈人使⽤用的開發環境、程式碼撰寫⾵風格不 ⼀一,不論是在除錯或未來維護上都較不易 • 檔案交換沒有統⼀一的控管機制,不知道誰 的版本⽐比較新/舊?不同⼈人對同⼀一檔案編輯 時,不知道差異
  27. 27. 佈署上的問題 • 上線主機與開發⽤用機器在環境上不同步, 程式碼的運⾏行結果可能也不同 • 所有連線資訊直接寫在程式碼內,佈署時 需要⼿手動更改,無法動態由主機端載⼊入 • 直接⽤用 FTP 佈署程式碼,連線⽅方式不安 全,佈署的程式版本也無法控管
  28. 28. 看似簡單卻不簡單 • ⼀一個網路應⽤用程式要處理的⼯工作有: 謎之⾳音:何不⽤用框架? - 路由 Route - ⾴頁⾯面邏輯控制 - DB 操作 - 產出⾴頁⾯面 - 安全性防禦 - AJAX 處理 - 資料分⾴頁 - 使⽤用者認證 - 錯誤處理機制 - 寄發 Email
  29. 29. 導⼊入當代開發流程 • 使⽤用 MVC 框架 • 使⽤用版本控制 • 使⽤用虛擬機器開發 • 使⽤用 PaaS 平台做佈署
  30. 30. 框架 101 • 將常⾒見的開發需求、功能,封裝成各種元 件,以⽀支援開發者迅速的完成開發⼯工作, 不⽤用每次重新發明輪⼦子 • 框架本⾝身會有許多開發慣例、程式碼撰寫 ⾵風格。透過使⽤用相同的框架,開發者彼此 間將更容易的進⾏行合作、維護 ★ 參考資料:http://en.wikipedia.org/wiki/Web_application_framework
  31. 31. MVC 框架 • M-V-C 是⺫⽬目前網路應⽤用程式的主流開發架 構,透過將 資料操作(Model)、流程控制 (Controller)、⾴頁⾯面顯⽰示(View) 分離,讓開 發⼯工作可以各司其職,程式碼更容易維護 • ⼤大多數的框架還會提供⼀一系列的⼯工具包、 擴充程式,儘可能的降低開發⼯工作的難度
  32. 32. 版本控制 • 就像玩遊戲都會找存檔點⼀一樣,版本控制 的⺫⽬目的就是讓每⼀一次的程式碼變更都有紀 錄可尋、可查、可回溯 • 在開發流程中導⼊入版本控制,能讓成員更 ⽅方便的協助合作;佈署時,若失敗了還有 辦法回復到上⼀一個可運作的版本
  33. 33. 使⽤用虛擬機器開發 • 透過虛擬化技術直接在⾃自⼰己的本機端安裝 另⼀一個作業系統 (guestVM),並讓⾃自⼰己的 本機端與該虛擬機器共享檔案,達成在本 機開發但在虛擬機器測試的好處 • 虛擬機器可以完全模擬上線主機的環境, 若不⼩小⼼心把環境弄壞了,砍掉重練就好
  34. 34. PaaS 佈署 • ⼀一般常⾒見的網路主機往往是 共享主機 (shared hosting),會有 PHP 版本過舊、資 源共搶、無法安裝額外套件的缺點 • 使⽤用 PaaS 的服務,讓你只需要專注在程 式開發即可,主機安裝、設定、擴充、流 量等都可以由平台直接幫您完成
  35. 35. 框架綜覽與選擇決策
  36. 36. PHP 市佔率最⾼高 • PHP 是市佔率最⾼高的伺服器端程式語⾔言 ★ 資料來源:http://w3techs.com/technologies/overview/programming_language/all W3Techs.com 2014/11/16
  37. 37. 框架也因此出奇的多 ★ 資料來源:http://socialcompare.com/en/comparison/php-frameworks-comparison
  38. 38. (認)真的很多… ★ 資料來源:http://www.bestwebframeworks.com/compare-web-frameworks/php/
  39. 39. 族繁不及備載… ★ 資料來源:http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP_2
  40. 40. 各出奇招、各有所⻑⾧長 • 輕量、⼩小巧 • 敏捷開發、易於使⽤用 • 全⽅方位、企業化 • 效能為⺩王
  41. 41. 框架選擇策略 • 框架本⾝身的設計邏輯與哲學 • 官⽅方有⼤大神領頭開發、背後的商業⽀支援 • 教學資源豐富、傳教⼠士多 • 社群夠⼤大、相關⽣生態系完整
  42. 42. 框架選擇策略 • 框架本⾝身的設計邏輯與哲學 - 架構本⾝身的設計是否清楚簡明? - 框架內各元件的職責是否分明? - 各元件的 API 封裝是否直覺且易於使 ⽤用?
  43. 43. 框架選擇策略 • 官⽅方有⼤大神領頭開發 - 其開發⽅方向是否有跟上⼤大環境趨勢? - 框架是否有定期更新、 安全性升級的通 告?確保框架維護不會出問題 - 官⽅方背後是否有商業公司⽀支援?商業公 司往往會投⼊入⼀一定⼈人⼒力成本⽀支援框架的 發展
  44. 44. 框架選擇策略 • 教學資源豐富、傳教⼠士多 - 框架本⾝身的⽂文件是否完整清楚? - 若該框架的傳教⼠士夠多,就表⽰示除了官 ⽅方⽂文件外,還有眾多的教學範例。傳教 ⼠士愈多,往往代表有⾜足夠的教學資源供 學習、觀摩。
  45. 45. 框架選擇策略 • 社群夠⼤大、相關⽣生態系完整 - 使⽤用⼀一個框架就像加⼊入⼀一個⽣生態系⼀一樣, 若該⽣生態系不夠⼤大,對應的學習資源、 可使⽤用的套件就會相形不⾜足,在開發上 就會相形孤單。因此,選擇⼀一個社群夠 ⼤大的框架是⼀一個重要的因⼦子。
  46. 46. Laravel Framework • 由 Taylor Otwell 主導開發,⺫⽬目前 4.2 版: - 參考 Ruby on Rials、ASP.NET MVC 及 Sinatra 的語法和架構 - ⼤大量使⽤用 Symfony 元件,建⽴立堅實的框 架基礎 - 預定 2014.12 發佈 5.0 版
  47. 47. 核⼼心理念 語法簡單優美的, 讓開發者愉快的 PHP 框架! Happy developers make the best code. ★ 參考資料:http://laravel.com/docs/4.2#laravel-philosophy
  48. 48. 選擇 Laravel 的原因 • 簡單、清楚、⾃自我表達的框架元件 • 官⽅方⽂文件完整清楚、相關學習資源完整 • 作者定期發佈新版 • 跟上潮流趨勢的開發⼯工具/套件 • 傳教⼠士多、社群⼤大 • ⽣生態系完整、 相關套件多
  49. 49. 選擇 Laravel 的原因 • 框架元件本⾝身具備簡單、清楚、⾃自我表達 的特質,作者如是說: - It’s expressive - It’s simple - It’s accessible ★ 參考資料:http://taylorotwell.tumblr.com/post/21038245018/why-laravel
  50. 50. 選擇 Laravel 的原因 • 官⽅方⽂文件完整清楚 • 除了官網上提供的原⽂文版 • 現在還有社群正體中⽂文版 • 相關學習資源多 • 可在 leanpub 上⽤用 laravel 當關鍵字查 ★ 官⽅方⽂文件:http://laravel.com/docs/4.2 ★ 參考書籍:http://www.laravel-dojo.com/books
  51. 51. 選擇 Laravel 的原因 ★ 參考資料:https://twitter.com/ipalaus/status/305438396568989697 作者每 6 個⽉月為⼀一個發⾏行週期
  52. 52. 選擇 Laravel 的原因 But… Laravel 5 會延到 2015/01,作者說:「值得等!」 ★ 參考資料:http://blog.laravel.com/laravel-5-release-dates/
  53. 53. 選擇 Laravel 的原因 ★ 參考資料:http://blog.laravel.com/on-laravels-future-part-2/ 2015 年起,作者 (Taylor) 將全職投⼊入開發 Laravel ★ 參考資料:http://taylorotwell.com/on-laravels-future/
  54. 54. 選擇 Laravel 的原因 • 跟上潮流趨勢的開發⼯工具/套件 - homestead (虛擬機器) - socialite (介接各種 oauth 認證) - cashier (整合 Stripe 訂閱型⾦金流服務) - elixir (處理前端 assets 的煉⾦金藥)
  55. 55. 選擇 Laravel 的原因 • 傳教⼠士多 - 各⽅方⼤大神投⼊入 Laravel 開發⼯工作 (Cool kids are in the community!) • 社群⼤大 - 2013 年最受歡迎框架 - Github 最多關注 PHP 框架 ★ 參考資料:http://laravel-news.com/category/the-artisan-files/ ★ 參考資料:http://taylorotwell.com/on-community/
  56. 56. 市場調查現況 ★ 資料來源:http://www.sitepoint.com/best-php-frameworks-2014/ Laravel 是 2013 年最受歡迎的框架
  57. 57. Github 最受觀注 Laravel 是 Github 上最多星星的 PHP 框架 ★ Github 搜尋:http://bit.ly/1t1qsEz ★ Wikipedia 紀錄:http://en.wikipedia.org/wiki/Laravel#cite_note-7
  58. 58. Google 搜尋趨勢 Laravel 是最熱⾨門的搜尋關鍵字 (Google Trend) ★ 參考資料:http://bit.ly/1sYbJtQ
  59. 59. 選擇 Laravel 的原因 ★ 參考資料:http://packalyst.com/ ⽣生態系完整、相關套件多
  60. 60. ⼩小結 • 透過專題模擬了解單純使⽤用 PHP 撰寫網路 應⽤用程式時可能⾯面臨的瓶頸和問題 • 現代開發流程、框架選擇決策及 Laravel 框架簡介 • 接下來,將⽤用 Laravel 再實作⼀一次專題以 做為對照
  61. 61. Q & A Thanks for listening!

×