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