怎樣選擇適合本身php框架

PHP是世界上最流行的編程語言之一,而且最近PHP7的發佈讓這門服務器端的編程語言比以往更加的強大和穩定。php

PHP普遍應用於大型項目,例如Facebook使用PHP來創建和維護他們的內部系統。Wordpress使用PHP做爲它的內核使其佔據了26%的web項目。目前82%的web網站使用PHP做爲其服務器端的開發語言(據Web Tecnology Surveys網站調查)html

在這篇文章內,咱們將一塊兒來分析3中最流行的PHP框架:Symfony、Laravel、和Yii。我門經過說明怎麼比較它們來幫助你們選擇一個最適合本身需求的框架。前端

爲何選擇使用PHP框架?

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

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

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

怎樣選擇PHP框架

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

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

Symfony、 Laravel和Yii

在深究技術細節以前,咱們先來總體介紹下這3個競爭者數據庫

Symfony

Symfony 是一套可複用的PHP組件,這些組件可使開發者開發出易擴展和高性能的應用。有30個組件可供選擇,開發者有徹底的自由在RAD環境中實驗和工做。Symfony 的APIs也使得它很容易的與第三方應用整合,它也能與流行的前端框架一塊兒使用,好比AngularJs。編程

不少的流行項目包括Drupal和phpBB也使用了Symfony框架。實際上目前最流行的框架Laravel也是創建在Symfony上。php框架

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所示。

社區和資源

開源框架持久性的一個重要預測因素是其社區的力量。這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是一個勝利者。

本文爲翻譯文檔-- 原文連接

相關文章
相關標籤/搜索