7

我们将在 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中没有自动完成
  • 配置必须是硬编码的
  • 可能会慢一点,因为它在 phar 存档中?

你认为哪一个是最好的?

谢谢

4

2 回答 2

16

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

当您通过 composer 包含Silex 时,几乎排除了您为 Silex 列出的所有缺点。然后它只是在供应商内部加载 Silex 依赖项,您没有 phar 的开销,也没有 IDE 中缺少代码完成的问题。事实上,PHAR 分布已被弃用

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

我正在使用 Silex 构建一个相当大的 REST API,并且从 Silex 开始没有后悔任何事情。您可以获得 Symfony2 组件的许多优势,因为 silex 是用它们构建的,并且具有非常轻量级的 rest-ready 微框架,而无需经历数小时的 yaml 配置和设置。

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

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

于 2012-07-05T06:38:06.780 回答
11

就我个人而言,我真的很喜欢 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() {
     ...
 }
于 2012-04-17T12:11:13.047 回答