Silex 与 SLIM PHP 框架
Silex vs SLIM PHP Framework
我们已经缩小了在 Silex 和 Slim PHP 框架之间的搜索范围,以便在我们的 Apache/PHP/MySQL 服务器上路由我们的 REST API。
两者似乎都有很好的评价。 Silex 可能有一个更大的社区,因为它来自 Symfony。但是 Slim 中的文档似乎更好。
你们有什么建议?任何来自生产环境的真实世界经验?
萨西什
我有同样的选择,我选择了 Silex,原因如下:
- Silex 似乎比 Slim 有更大的社区,也许这只是我的观点
- 它基于 Symfony 组件,因此稍加思考,您可以使用适用于 Symfony 的技巧和解决方法,并将它们应用于 Silex。
- 因为它基于 Symfony,所以它与其他包(例如 Twig,这对我来说是必需的)有更好的集成
- 这个 Symfony 基础还保证它将比 "Long Term Support" 更独立的 Slim。
总而言之,主要论据是基于 Symfony,它有很多优点。
Symfony 调试工具是世界上最好的工具!!
现在我有两个用 Twig 制作的网站,我真的很开心!
你也可以看到,这是这两个框架的技术比较:
https://michalzuber.wordpress.com/2015/04/02/silex-vs-slim-php-microframework-comparison/
Slim 3 重量很轻,非常适合 API。
在构建 Slim 应用程序时,您可以选择注入一个容器(默认为 Pimple,但任何 Container-Interop 都可以)。 Silex 应用扩展了 Pimple,因此 是 一个容器。
如果需要 Twig,则需要 slim/twig-view。
Slim 的请求和响应支持 PSR-7 HTTP 消息实现。
Silex 不支持 PSR-7(在撰写本文时)这一事实令人非常失望。它有很多上面已经提到的优点。有一个 plugin/extension 可以让你这样做,但是当你正在寻找一个轻量级框架时,我看不出增加这个开销有什么意义
如果你想创建 api,Slim 更好,因为它轻便、快速。因此 slim 为您提供了 DI 和路由,使用您自己的库或来自 laravel 或 symfony 或任何第三方的插件更加灵活。
例如,您可以使用来自 laravel 的哨兵进行 auth
2018 年 1 月 12 日,该微框架的主要作者 Fabien Potencier 写道,Sensiolabs 停止支持 Silex。
https://symfony.com/blog/the-end-of-silex
引自Silex官网:
Silex is in maintenance mode. Ends of life is set to June 2018. Use Symfony 4 instead. Read more on Symfony's blog.
TL;DR 选择 Slim 4。"At its core, Slim is a dispatcher that receives an HTTP request, invokes an appropriate callback routine, and returns an HTTP response. That’s it."。应该是这样。
派对迟到了,但仍然是我对这个主题的 2 美分 (!)我会选择 Slim。我已经在我之前的 2 个项目中做过,它从未让我失望。在 "here's why" 部分之前,我想简要地分享一下我的背景;多年以前,就在我用 Node.js 介绍自己之前,我曾与 CakePHP 和 Laravel(尤其是 >=5.4、<5.8)(以及 Lumen)合作过。从那时起,我几乎所有的工作都在云中的 Node.js 上运行。现在 table 上有 Golang……但那是另一回事了。由于上述2个项目的要求(或者应该说是约束),我不得不写成PHP。自从与 Node.js 一起过去这么多年以来,我突然意识到我几乎完全忘记了 PHP。但是有两件事我记得 crystal 清楚;我受过苦。很多。因为那些框架。
不要误会我的意思,前者是最年长的,后者是一群潮人,我尊重他们、他们的作者和他们的社区。一切都有存在的理由。但一个是庞然大物,另一个是神奇的(两者都不是很好 - 我的意思是你有没有尝试用那些外观和静态方法和东西调试 Laravel?)。好的,我听到你说的,它们是框架,它们应该为你做事(你听说过 Hollywood Principle 吗),不是所有事情 都为你做。这对我来说意味着他们总是在你耳边窃窃私语"our way or highway"(有时甚至大喊大叫)。 "Surely you can do this (say push a job to a queue, query your database, send email, etc.) but first do this, and then that"(可能还有几个步骤,但这还不错)。这样做的坏处是(不是指责任何人)我不知道它们对框架意味着什么。他们必须做一些有意义的事情,很明显,我不知道那是什么。我应该知道吗?是的当然。看在上帝的份上,我正在用那个框架编写这个应用程序,我应该知道它的作用。 X 版很容易掌握,但是 Y、Z、T 版呢……您看到 Laravel 文档站点上的版本下拉列表了吗?我采取了这些步骤,因为有人告诉我。没关系,公平就是公平,这些步骤让我取得了更大的成就。但渐渐地,我在他们(各自的作者)的控制之下。在那之后,即使是很小的变化也会在 SO,GitHub 问题,Google 上进行大量搜索......有时会成功,但大多数时候不会。无论哪种方式,都必须声明针对框架的 war。
在我看来,这不是开源框架应该有的样子。从某种意义上说,我是供应商锁定的。也许我想遵守 PSR(不是因为我是顾问推荐狂,因为 PHP-FIG 是一个著名的组织,其标准几乎适用于 语言的每个方面 - 这很重要;对于语言,而不是任何框架)。让我问你一件事;你使用 Composer 吗?如果是,为什么?因为它是标准的(我不确定是不是)?因为大家都在用?因为你需要的包推荐这种安装方式?实际上,答案并不重要,最终您会使用它。您几乎可以将它用于每个 PHP framework/project。 Composer 要求您在系统上至少安装 PHP,巧合的是这是唯一的要求。这就是自由,我想要那个。我想根据自己的喜好挑选路由器或容器。今天这个礼包,晚点别的。
Slim 给了我那种自由,尤其是在版本 4 上。它的社区很小,这是可以预见的;它比其他成熟的框架做得少得多。实际上它是一个微框架(尽管我用它编写了一个 MVC 应用程序和 REST API 服务器)。其他软件包的社区现在很重要。你需要一个容器,composer require php-di/php-di
。现在想想它的社区,因为 "your" 应用程序(因此框架)是它的一部分。你有个问题?专门针对该软件包寻求帮助。也许使用另一个框架的人(或者根本不使用任何框架的人——如果现在还有的话)可能会帮助你解决你的问题。因此,由于您的设置,您已经与框架无关。你不喜欢 PHP DI,我们给自己找另一个 PSR-11 兼容的包。这几乎适用于 Slim 的每个部分——除了路由器(Nikic 的 FastRouter 应该敲响警钟),尽管它已经是我目前看到的其他路由器的基础。
说完之前我也要说一句,Lumen和Silex有老大哥。我在 Lumen 经历了一些挫折时刻;当我说 "I can't do [fill here with a not-so-common problem] with Lumen version X.Y" 他们说 "Use Laravel instead, it is really easy to upgrade"。应该是为了神!他们有着相同的血脉。我不是要那个。如果我想使用 Laravel 我会在一开始就选择它,而不是一开始就使用 Lumen。我选择 Lumen 有一些原因,就像作者写它也有一些原因(我不知道为什么,但仍然......)。 Lumen 应该是 Laravel 的更轻量级微框架替代品,而不是垫脚石。
选择 Slim 也有它的缺点,但我认为这是关于感知的。在这种情况下,我想知道我的申请发生了什么。推理不就是这么回事吗?即使我要走这条崎岖的道路,至少我知道最后我的应用程序将完全按照我的命令执行,仅此而已。
感谢您的宝贵时间,请原谅格式化。
我们已经缩小了在 Silex 和 Slim PHP 框架之间的搜索范围,以便在我们的 Apache/PHP/MySQL 服务器上路由我们的 REST API。
两者似乎都有很好的评价。 Silex 可能有一个更大的社区,因为它来自 Symfony。但是 Slim 中的文档似乎更好。
你们有什么建议?任何来自生产环境的真实世界经验?
萨西什
我有同样的选择,我选择了 Silex,原因如下:
- Silex 似乎比 Slim 有更大的社区,也许这只是我的观点
- 它基于 Symfony 组件,因此稍加思考,您可以使用适用于 Symfony 的技巧和解决方法,并将它们应用于 Silex。
- 因为它基于 Symfony,所以它与其他包(例如 Twig,这对我来说是必需的)有更好的集成
- 这个 Symfony 基础还保证它将比 "Long Term Support" 更独立的 Slim。
总而言之,主要论据是基于 Symfony,它有很多优点。 Symfony 调试工具是世界上最好的工具!!
现在我有两个用 Twig 制作的网站,我真的很开心!
你也可以看到,这是这两个框架的技术比较: https://michalzuber.wordpress.com/2015/04/02/silex-vs-slim-php-microframework-comparison/
Slim 3 重量很轻,非常适合 API。
在构建 Slim 应用程序时,您可以选择注入一个容器(默认为 Pimple,但任何 Container-Interop 都可以)。 Silex 应用扩展了 Pimple,因此 是 一个容器。
如果需要 Twig,则需要 slim/twig-view。
Slim 的请求和响应支持 PSR-7 HTTP 消息实现。
Silex 不支持 PSR-7(在撰写本文时)这一事实令人非常失望。它有很多上面已经提到的优点。有一个 plugin/extension 可以让你这样做,但是当你正在寻找一个轻量级框架时,我看不出增加这个开销有什么意义
如果你想创建 api,Slim 更好,因为它轻便、快速。因此 slim 为您提供了 DI 和路由,使用您自己的库或来自 laravel 或 symfony 或任何第三方的插件更加灵活。 例如,您可以使用来自 laravel 的哨兵进行 auth
2018 年 1 月 12 日,该微框架的主要作者 Fabien Potencier 写道,Sensiolabs 停止支持 Silex。
https://symfony.com/blog/the-end-of-silex
引自Silex官网:
Silex is in maintenance mode. Ends of life is set to June 2018. Use Symfony 4 instead. Read more on Symfony's blog.
TL;DR 选择 Slim 4。"At its core, Slim is a dispatcher that receives an HTTP request, invokes an appropriate callback routine, and returns an HTTP response. That’s it."。应该是这样。
派对迟到了,但仍然是我对这个主题的 2 美分 (!)我会选择 Slim。我已经在我之前的 2 个项目中做过,它从未让我失望。在 "here's why" 部分之前,我想简要地分享一下我的背景;多年以前,就在我用 Node.js 介绍自己之前,我曾与 CakePHP 和 Laravel(尤其是 >=5.4、<5.8)(以及 Lumen)合作过。从那时起,我几乎所有的工作都在云中的 Node.js 上运行。现在 table 上有 Golang……但那是另一回事了。由于上述2个项目的要求(或者应该说是约束),我不得不写成PHP。自从与 Node.js 一起过去这么多年以来,我突然意识到我几乎完全忘记了 PHP。但是有两件事我记得 crystal 清楚;我受过苦。很多。因为那些框架。 不要误会我的意思,前者是最年长的,后者是一群潮人,我尊重他们、他们的作者和他们的社区。一切都有存在的理由。但一个是庞然大物,另一个是神奇的(两者都不是很好 - 我的意思是你有没有尝试用那些外观和静态方法和东西调试 Laravel?)。好的,我听到你说的,它们是框架,它们应该为你做事(你听说过 Hollywood Principle 吗),不是所有事情 都为你做。这对我来说意味着他们总是在你耳边窃窃私语"our way or highway"(有时甚至大喊大叫)。 "Surely you can do this (say push a job to a queue, query your database, send email, etc.) but first do this, and then that"(可能还有几个步骤,但这还不错)。这样做的坏处是(不是指责任何人)我不知道它们对框架意味着什么。他们必须做一些有意义的事情,很明显,我不知道那是什么。我应该知道吗?是的当然。看在上帝的份上,我正在用那个框架编写这个应用程序,我应该知道它的作用。 X 版很容易掌握,但是 Y、Z、T 版呢……您看到 Laravel 文档站点上的版本下拉列表了吗?我采取了这些步骤,因为有人告诉我。没关系,公平就是公平,这些步骤让我取得了更大的成就。但渐渐地,我在他们(各自的作者)的控制之下。在那之后,即使是很小的变化也会在 SO,GitHub 问题,Google 上进行大量搜索......有时会成功,但大多数时候不会。无论哪种方式,都必须声明针对框架的 war。 在我看来,这不是开源框架应该有的样子。从某种意义上说,我是供应商锁定的。也许我想遵守 PSR(不是因为我是顾问推荐狂,因为 PHP-FIG 是一个著名的组织,其标准几乎适用于 语言的每个方面 - 这很重要;对于语言,而不是任何框架)。让我问你一件事;你使用 Composer 吗?如果是,为什么?因为它是标准的(我不确定是不是)?因为大家都在用?因为你需要的包推荐这种安装方式?实际上,答案并不重要,最终您会使用它。您几乎可以将它用于每个 PHP framework/project。 Composer 要求您在系统上至少安装 PHP,巧合的是这是唯一的要求。这就是自由,我想要那个。我想根据自己的喜好挑选路由器或容器。今天这个礼包,晚点别的。
Slim 给了我那种自由,尤其是在版本 4 上。它的社区很小,这是可以预见的;它比其他成熟的框架做得少得多。实际上它是一个微框架(尽管我用它编写了一个 MVC 应用程序和 REST API 服务器)。其他软件包的社区现在很重要。你需要一个容器,composer require php-di/php-di
。现在想想它的社区,因为 "your" 应用程序(因此框架)是它的一部分。你有个问题?专门针对该软件包寻求帮助。也许使用另一个框架的人(或者根本不使用任何框架的人——如果现在还有的话)可能会帮助你解决你的问题。因此,由于您的设置,您已经与框架无关。你不喜欢 PHP DI,我们给自己找另一个 PSR-11 兼容的包。这几乎适用于 Slim 的每个部分——除了路由器(Nikic 的 FastRouter 应该敲响警钟),尽管它已经是我目前看到的其他路由器的基础。
说完之前我也要说一句,Lumen和Silex有老大哥。我在 Lumen 经历了一些挫折时刻;当我说 "I can't do [fill here with a not-so-common problem] with Lumen version X.Y" 他们说 "Use Laravel instead, it is really easy to upgrade"。应该是为了神!他们有着相同的血脉。我不是要那个。如果我想使用 Laravel 我会在一开始就选择它,而不是一开始就使用 Lumen。我选择 Lumen 有一些原因,就像作者写它也有一些原因(我不知道为什么,但仍然......)。 Lumen 应该是 Laravel 的更轻量级微框架替代品,而不是垫脚石。
选择 Slim 也有它的缺点,但我认为这是关于感知的。在这种情况下,我想知道我的申请发生了什么。推理不就是这么回事吗?即使我要走这条崎岖的道路,至少我知道最后我的应用程序将完全按照我的命令执行,仅此而已。
感谢您的宝贵时间,请原谅格式化。