2012-04-17 68 views
8

我們將用PHP實現一組REST Web服務。我們已經選擇了2個框架來做到這一點:Symfony 2和Silex(基於Symfony2的微型框架作爲phar存檔)。REST Web服務:Symfony 2 vs silex

現在只有少數服務,只有少量資源作爲GET返回,但方法集最終會增長幷包含其他休息操作(put/post/delete)。

這裏是我走到這一步,這些2個框架

Symfony2的

優點利弊清單:

  • 更強大
  • 學說ORM
  • 可以用XDebug進行調試
  • 配置在陽明
  • 社區
  • 更多的支持
  • 自動完成的IDE
  • 快速

缺點更習慣:

  • 需要FOSBundle做REST(? )(實際上,我想知道這是否真的有用)

Silex的

優點:

  • 輕量級
  • 似乎更容易創建REST的URL
  • 更容易部署(藥業檔案)

缺點(?):

  • 沒有學說ORM
  • 無法調試(藥業檔案)
  • 在IDE自動完成沒有
  • 配置必須被硬編碼
  • 可能會有點慢,因爲它是在存檔藥業?

你認爲哪一個最好?

感謝

回答

12

我個人很喜歡的symfony 2,它很容易創建使用註釋語法REST的網址,在你的控制器,你把東西像

/** 
* @Route("/user/{id}", requirements={"id" = "\d+"}, defaults={"_format"="json"}) 
* @Method({"GET"}) 
*/ 
public function getUser($id) { 
    ... 
} 
/** 
* @Route("/user", defaults={"_format"="json"}) 
* @Method({"PUT"}) 
*/ 
public function putUser() { 
    ... 
} 
+1

我們已經決定去與Symfony選項以及 – David 2012-04-18 13:45:00

+3

那麼https://github.com/FriendsOfSymfony/FOSRestBundle呢? – umpirsky 2012-11-18 10:32:58

16

你的項目的大小取決於真和既然你說它很小,我會選擇Silex。

幾乎所有您列出的Silex的缺點都會在include silex through composer時被排除。然後,它只是在供應商內部加載Silex依賴關係,並且您沒有pha​​r的開銷,也沒有在IDE中缺少代碼完成。其實the PHAR distribution is deprecated。至於Doctrine,Silex有一個built in Doctrine ServiceProvider,可以在Silex項目中無縫加載Doctrine DBAL。您可以輕鬆地自行添加DoctrineORM或使用github上的3rd party serviceProviders之一。

我正在用Silex構建一個相當大的REST API,並沒有後悔用Silex開始的一件事情。 Symfony2組件擁有很多優點,因爲它們是與它們一起構建的,並且具有非常輕量級的可以休息的微框架,而無需經過幾個小時的配置和設置。

而且說實話,我必須承認我不是註釋的一個巨大的風扇,註解是很好,但我認爲例子是@mcfedr把它有點過頭了,但是這只是個人的品味。

我希望我能揭穿一些你對Silex的偏見。搖擺一下,你不會後悔的。另一方面,你可能不會後悔Symfony2 :)

+1

Hi ChrisR。我很好奇你是如何爲你的Silex項目創建REST api文檔的。你是手動做還是找到了一種發生器,比如symfony2的NelmioApiDocBundle。就我個人而言,我喜歡Silex,但我真的在考慮Symfony2只是爲了生成auto api文檔。 – 2012-08-22 08:01:41

+0

不幸的是,我不是自動生成API文檔,這是在我的待辦事項列表:) – ChrisR 2012-09-04 14:21:39

+0

@ChrisR我可以問你如何繼續這個項目?你是否在你的API中使用了DBAL或實體等? – coder4show 2015-10-05 21:05:08