怎樣選擇適合自己php框架

pilishen發表於2019-03-04

PHP是世界上最流行的程式語言之一,並且最近PHP7的釋出讓這門伺服器端的程式語言比以往更加的強大和穩定。

PHP廣泛應用於大型專案,例如Facebook使用PHP來建立和維護他們的內部系統。Wordpress使用PHP作為它的核心使其佔據了26%的web專案。目前82%的web網站使用PHP作為其伺服器端的開發語言(據Web Tecnology Surveys網站調查)

在這篇文章內,我們將一起來分析3中最流行的PHP框架:Symfony、Laravel、和Yii。我門通過說明怎麼比較它們來幫助大家選擇一個最適合自己需求的框架。

為什麼選擇使用PHP框架?

是什麼讓我們使用框架而不是使用純粹的php原生語言來開發我們的應用?使用框架的一些好處如下:

  • PHP框架使開發過程更快,例如,你不必為從資料庫中查詢資料去寫複雜的查詢語句。PHP框架提供了CRUD操作(create建立,read讀取,update更新, delete刪除)
  • 框架讓開發者更加容易的擴充套件系統
  • 比起普通的php應用程式碼的維護更簡單。應用的程式碼更加的精簡併且易操作
  • MVC模型保證來快速的開發
  • 對於常見的安全威脅,框架能更好的保護應用web應用的安全
  • don‘t repeat yourself(不要重複)原則保證使用最少的程式碼發揮最大的作用

以上的好處很顯著以致於不容忽視。即使使用原生的PHP也能用來開發任何的應用,但是當前的開發規範要求使用工具和時間管理的技巧來滿足市場的需要。

怎樣選擇PHP框架

回答下面的一些問題能幫助你選擇適合自己的框架:

  1. 這個框架有哪些特點和功能?(它提供了我的需求嗎?)
  2. 這個框架學習容易嗎?
  3. 這個框架可擴充套件行強嗎?
  4. 這個框架的核心團隊是否在積極的開發和維護它呢?
  5. 這個框架提供長期支援嗎?
  6. 這個框架有強大的社群支援嗎?

Symfony、 Laravel和Yii

在深究技術細節之前,我們先來整體介紹下這3個競爭者

Symfony

Symfony 是一套可複用的PHP元件,這些元件可以使開發者開發出易擴充套件和高效能的應用。有30個元件可供選擇,開發者有完全的自由在RAD環境中實驗和工作。Symfony 的APIs也使得它很容易的與第三方應用整合,它也能與流行的前端框架一起使用,比如AngularJs。

很多的流行專案包括Drupal和phpBB也使用了Symfony框架。實際上目前最流行的框架Laravel也是建立在Symfony上。

Laravel

Laravel作為“為web藝術家而生的框架”被廣泛使用,它提供了極其優秀的社群並獲得了最流行的框架的稱號。

在2015年5月 Laravel 釋出宣告 Laravel5.1版本將提供2年的長期支援。2015年11月5.2版本推出。很多託管提供商提供Laravel支援並提供Laravel應用的託管解決方案。

Yii

Qiang Xue 在2008年推出了Yii框架,Yii框架安全、快速、效能卓越。Yii使用Composer作為它的php依賴管理工具來幫助處理不同的依賴和其安裝。得益於惰性載入技術的使用,Yii框架是目前速度最快的框架。

Yii另一個偉大的特性是整合來JQuery。這種整合使得前端的開發者開始的擁抱它,並且它使用腳手架生成程式碼,類似與Symfony。Yii也使用元件來快速開發應用。

怎樣比較它們

這3個框架開發Web2.0應用都非常的好,但是各自服務與不同的目的。讓我們看看它們的特性以及它們目前的狀態。

模版引擎

模板引擎在編寫前端程式碼時,簡化開發者的工作並提供更好的功能。模版引擎提供的特性包括自動html程式碼轉義和過濾、添補原生php留下的間隙。

Symfony Twig 模板系統

Twig是一個PHP的現代模板系統。Symfony利用Twig的優勢使開發者寫出更加乾淨、簡潔的程式碼。

詳見Twig網站學習更多的關於twig的特性

Laravel Blade 模板系統

不像其他的模板系統,Blade讓你在檢視中是用PHP程式碼。並且Blade對應用的效能影響幾乎為零,因為檢視檔案都是以.blade.php作為副檔名。檢視檔案所有的程式碼在程式執行中都轉換為了原生的php。

Yii 預設模板系統

Yii預設沒有使用任何第三方模版系統,但是這並不意味者它缺少對模版引擎的支援。模板引擎的選擇取決去開發團隊。Yii推薦使用Twig和Smarty模板引擎。介於Symfony使用的是Twig,所以如果你以前使用過Symfony,你可能想在你的下一個Yii框架中使用Twig。

這裡沒有明顯的優勝者。3個框架都使用模版引擎使前端程式碼的的書寫和維護更簡單。Yii的一個小優勢是它沒有提前預設一個模板系統。

框架不同點

每個框架都不一樣。Symfony致力於提供可複用的元件和提供最好的模組化支援。Symfony也使用模型和控制器來開發web應用,對於新的開發者這看起來有點老套。但是確實好用。對於模組化框架來說Symfony是一個很好的例子。你可以使用模組化的方式在你的專案中使用Symfony提供的30個元件。

Yii框架使用MVC模型(Symfony也提供對MVC的支援)

Symfony 可以用來快速開發和用於複雜專案。即便有對哪個框架最適合開發複雜專案有爭議,Symfony相對於其他框架顯示出了卓越的複雜處理能力

Yii也使用元件但是不像Symfony一樣模組化。Laravel不像另外2個框架一樣提供激進的模組化支援。

如果你正在尋找一個模組化的框架,就去選擇Symfony,其他的話,Laravel和Yii都是很好的選擇。

安裝

這三個框架提供了許多安裝程式。如果你用Composer去處理安裝包,你會很高興發現,所有的框架都可以通過Composer安裝

對Symfony而言,Composer的作用更加關鍵。通過使用PHPComposer依賴管理器,元件處理的想法能更好的實現。

各個框架還有其他的安裝方式。例如,您可以使用簡單的歸檔方法安裝框架。

安裝完成後,Yii為你提供了一個Web應用程式和一個基本模板來工作。Symfony2還提供了一個開始的演示程式。

Laravel通過Composer的composer create-project命令或者通過Laravel安裝器也能簡單的進行安裝。詳情請檢視laravel安裝指南。

快速開發

從公司或客戶的角度來看,快速地將應用程式推向市場以滿足消費者的需求並擊敗競爭對手是很重要的。 symfony有一個強大社去支撐,並作為一個健壯的框架而凸顯出來。Laravel正在迅速成長,但在被視為PHP實際的開發選擇之前,Laravel還有很長的路要走。 另一方面,如果你不認識任何PHP框架,又想盡快上手,那麼可以考慮Laravel。Laravel有一個簡單的學習曲線,你會發現網上很多教程來幫助你開始。 Yii的效能有一個新的水平,併為快速的的程式碼生成和開發提供了程式碼腳手架。

效能

任何應用程式的效能只關係到它是否是一個使用關鍵資料的實時應用程式。有多少依賴高效能的web應用程式?並不是很多,但是框架的效能在許多專案中可以起到關鍵的作用。

社交網路是實時事件應用的首選例子,我們的一個明星的產品-jadson使用yii2建了一個移動社交網路,當初我們為編寫高效能的應用而選擇一個最好的框架時。Yii作為最快的PHP框架而凸顯出來。

Laravel的效能是一個頗有爭議的問題。它是最慢的,但這有關係嗎?你會找到線上資源去加速它的效能,包括GitHub上的指南讓你的laravel應用變得更快。

資料庫支援

Symfony 2提供了更好的資料庫支援。你可以使用一組資料庫,包括NoSQL和DynamoDB。 Yii和Laravel在這方面也同樣有用,但他們支援的資料庫比symfony的少。每個框架支援的資料庫如表1所示。

怎樣選擇適合自己php框架

社群和資源

開源框架永續性的一個重要預測因素是其社群的力量。這3個框架都有穩定而堅實的社群,儘管Symfony的社群可能更成熟一些,但是社群在進化,所以對社群的未來的動態預測很難。 說到學習資料和文件,Laravel突出出來來,儘管Symfony和Yii並沒有落後很多。

可擴充套件性

框架是可以通過擴充套件或包進行擴充套件的結構,用來改進了它們的功能和範圍。說到擴充套件,Laravel是贏家。packalyst一個laravel擴充套件包的庫提供超過9000的擴充套件包。另一方面 Yii和symfony分別提供了2800左右的擴充套件和2830的包,Laravel提供來超過3被的擴充套件。Laravel在這方面似乎是最好的框架。

相同點

我們已經研究了框架之間的差異。現在讓我們看看它們的相似之處:

  • 3個框架都是全棧的php框架,從前端程式碼書寫到後段資料獲取,都提供了構建web應用的功能
  • 專案都是開源的,並且都託管在GitHub上,這使得任何人都能容易的貢獻自己的程式碼
  • 所有的框架都有很好的文件註釋並都與一個龐大的社群支援
  • 都支援ORM(Object Relationship Mapping 物件關係對映)。ORM非常適合編寫應用程式的物件導向程式碼。
  • 對於開發Web2.0應用都足夠強健、安全和可靠

仍然迷惑?也許這些列表有助於你縮小選擇範圍:

Symfony:

  • 提供長期支援版本
  • 帶有大量的特性
  • 它是目前最穩定的框架
  • 基於元件的框架,提供可擴充套件的模組化功能
  • 有強大的社群支援和豐富的學習資源

Yii:

  • 天生帶有ajax支援
  • 因為提供更快的操作,它是開發實時應用的最好選擇
  • 高度可擴充套件
  • 錯誤處理強大
  • 有利於開發Restful風格Web服務
  • 有強大的社群支援和豐富的學習資源

Laravel:

  • 最受歡迎的框架
  • 支援Composer管理擴充套件包
  • 單元測試做得很好
  • 提供了大量的擴充套件包來擴充套件框架的功能
  • 有強大的社群支援和豐富的學習資源

結論

在Symfony與Laravel與Yii的競爭中,3個框架都是極好的選擇,都為開發者提供來全棧的開發環境。對於我來說,作為一種新興的且沒有停止的跡象的明星-Laravel是一個勝利者。

本文為翻譯文件-- 原文連結

相關文章