REST Web服务:Symfony 2 vs silex

Dav*_*vid 8 php rest symfony silex

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

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

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

Symfony2的

优点:

  • 更加强大
  • 学说ORM
  • 可以使用XDebug进行调试
  • 在YML中配置
  • 更多用于社区
  • 更多的支持
  • IDE中的自动完成功能
  • 快速

缺点:

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

燧石

优点:

  • 轻量级
  • 似乎更容易创建REST URL(?)
  • 更容易部署(phar档案)

缺点:

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

您认为哪一个最好?

谢谢

Chr*_*isR 16

真的取决于你的项目的规模,因为你说它很小,我会选择Silex.

当你通过作曲家包含silex时,几乎所有你为Silex列出的缺点都被排除在外.然后它只是在供应商中加载Silex依赖项,你没有pha​​r的开销,也没有IDE中缺少代码完成.事实上,不推荐使用PHAR发行版.

至于Doctrine,Silex有一个内置的Doctrine ServiceProvider,可以在Silex项目中无缝加载Doctrine DBAL.您可以自己轻松添加DoctrineORM或使用github上的第三方serviceProviders之一.

我正在使用Silex构建一个相当大的REST API,并且没有后悔Silex的一件事.您可以获得Symfony2组件的许多优点,因为silex是使用它们构建的,并且具有非常轻量级的休息就绪微框架,无需经过数小时的yaml配置和设置.

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

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


mcf*_*edr 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() {
     ...
 }
Run Code Online (Sandbox Code Playgroud)

  • 那么https://github.com/FriendsOfSymfony/FOSRestBundle呢? (3认同)