REST Web服务:Symfony 2 vs silex

时间:2012-04-17 11:54:14

标签: php rest symfony silex

我们将在PHP中实现一组REST Web服务。我们选择了2个框架:Symfony 2和Silex(微框架作为phar存档,基于Symfony2)。

目前,只有少数服务,有一些资源作为GET返回,但这组方法最终会增长并包含其他休息动作(put / post / delete)。

这是我迄今为止对这两个框架的优缺点列表

Symfony2的

优点:

  • 更强大
  • Doctrine ORM
  • 可以使用XDebug进行调试
  • 配置YML
  • 在社区中使用更多
  • 更多支持
  • IDE中的自动完成

缺点:

  • 需要FOSBundle来做REST(?)(实际上,我想知道这是否真的有用)

捷希凯

优点:

  • 轻质
  • 似乎更容易创建REST网址(?)
  • 更易于部署(phar档案)

缺点:

  • no Doctrine ORM
  • 无法调试(phar archive)
  • IDE中没有自动完成功能
  • config必须是硬编码的
  • 可能有点慢,因为它在phar档案中?

您认为哪一个最好?

由于

2 个答案:

答案 0 :(得分:16)

真的取决于你项目的规模,既然你说它很小,我会选择Silex。

当您include silex through composer时,几乎所有为Silex列出的缺点都被排除在外。然后它只是在供应商中加载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组件的许多优点,因为silex是使用它们构建的,并且具有非常轻量级的休息就绪微框架,无需经过数小时的yaml配置和设置。

说实话,我必须承认我不是注释的忠实粉丝,注释很好,但我认为@mcfedr的例子有点太过分了,但这只是个人品味。

我希望我已经揭穿了你对Silex的一些偏见。给它一个摆动,你不会后悔。另一方面,您可能不会后悔Symfony2:)

答案 1 :(得分:12)

就我个人而言,我非常喜欢symfony 2,它很容易使用注释语法创建REST URL,在你的控制器中你可以使用

/**
 * @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() {
     ...
 }