我们缩小了在Silex和Slim PHP框架之间的搜索范围,以便在我们的Apache / PHP / MySQL服务器上路由我们的REST API。
两者似乎都有很好的评论。 Silex可能是一个更大的社区,因为它来自Symfony。但是在Slim中,文档似乎更好。
你们有什么建议?来自生产环境的任何实际经验?
Sathish所在
答案 0 :(得分:20)
我有同样的选择,我选择Silex,这就是原因:
总而言之,主要论点是基于Symfony,它具有许多优点。 Symfony调试工具是世界上最好的东西!!
现在我有两个用Twig制作的网站,我真的很开心!
您还可以看到,这是两个框架的技术比较: https://michalzuber.wordpress.com/2015/04/02/silex-vs-slim-php-microframework-comparison/
答案 1 :(得分:8)
Slim 3重量很轻,非常适合API。
在构建Slim应用程序时,您可以选择注入容器(默认情况下为Pimple,但任何Container-Interop都可以)。 Silex应用程序扩展了Pimple,因此 是一个容器。
如果你需要Twig,需要苗条/树枝视图。
Slim的请求和响应支持PSR-7 HTTP消息实现。
答案 2 :(得分:6)
2018年1月12日,这个微框架的主要作者Fabien Potencier写道,Sensiolabs停止支持Silex。
https://symfony.com/blog/the-end-of-silex
来自Silex官方网站的引用:
Silex处于维护模式。生命的终点设定为2018年6月。Use Symfony 4代替。详细了解Symfony's blog。
答案 3 :(得分:3)
如果你想创建apis,那么Slim会更好。因此slim为您提供DI和路由,使用laravel或symfony或任何第三方自己的库或插件更灵活。 例如,您可以使用laravel中的sentinel进行身份验证
答案 4 :(得分:0)
事实上,Silex不支持PSR-7(在撰写此文章时)一个巨大的失望。上面已经提到了很多好处。有一个插件/扩展可以让你这样做,但是当你在寻找一个轻量级的框架时,我没有看到增加这个开销的重点
答案 5 :(得分:0)
TL; DR选择Slim4。“从本质上讲,Slim是一个调度程序,它接收HTTP请求,调用适当的回调例程并返回HTTP响应。就是这样。就是这样。
晚些时候参加聚会,但是尽管如此,这还是我在该主题上的2美分(!),特别是对于未来的谷歌用户而言(尽管Silex已寿终正寝);我会去减肥。我已经在之前的两个项目中做过,但从未让我失望。在“这就是为什么”部分之前,我想简要介绍一下我的背景。几年前,就在我使用Node.js进行自我介绍之前,我曾与CakePHP和Laravel(尤其是> = 5.4,<5.8)(以及Lumen)一起工作过。从那时起,我几乎所有的工作都在云中的Node.js上运行。现在桌子上有Golang ...但这是另一个故事。由于上述两个项目的要求(或者我应该说约束),我必须编写PHP。自从使用Node.js过去多年以来,我突然意识到我几乎完全忘记了PHP。但是我记得有两件事很清楚:我受了很多。由于这些框架。 不要误会我的意思,前者是最老的,后者是最时髦的人,我尊重他们,他们的作者和他们的社区。一切都有存在的理由。但是一个是庞然大物,另一个是魔术(两者都不是一种好方法-我的意思是,您是否曾经尝试使用这些外观和静态方法及东西调试Laravel?)。好的,我听说您,他们是框架,应该为您做一些事情(您听说过好莱坞原则),而不是为您做任何事情。对我而言,这意味着它们总是在“我们的公路或高速公路”上耳语(有时甚至大喊大叫)。 “当然可以执行此操作(例如,将作业推送到队列,查询数据库,发送电子邮件等),但首先执行此操作,然后执行该操作”(也许可以执行更多步骤,但这并不算太糟糕)。不好的事情是(不指责任何人)我不知道,这对框架意味着什么。他们必须做一些有意义的事情,尽管很明显,我不知道那是什么。我知道吗当然是。为了上帝,我正在使用该框架编写该应用程序,我应该知道它的作用。 X版本很容易掌握,但是Y,Z,T版本呢...您是否在Laravel的文档站点上看到版本下拉列表?我已采取这些步骤,因为有人告诉我。再一次没关系,公平是公平的,这些步骤使我取得了更大的成就。但是逐渐地,我处于他们(各自作者)的控制之下。之后,即使是很小的变化,也需要进行大量的SO,GitHub问题,Google等搜索工作……有时最终会取得成功,而大多数情况下却没有。无论哪种方式,都必须对框架发动战争。 在我看来,这不是开源框架应有的方式。从某种意义上说,我被供应商锁定了。也许我想遵守PSR(不是因为我是顾问的建议狂,因为PHP-FIG是一个知名的组织,几乎对语言的各个方面都有标准-这很重要;对于语言,不适用于任何框架)。让我问你一件事;您使用Composer吗?如果可以,为什么?因为是标准的(我不确定是否是标准的)?因为每个人都使用它?因为您需要的软件包推荐这种安装方式?实际上,答案并不重要,在使用完一天之后。您几乎可以将其用于每个PHP框架/项目。 Composer要求您至少裸露地将PHP安装在系统上,这是唯一的要求。这就是自由,我想要那。我想根据自己的口味选择路由器或容器。今天,这个程序包,稍后再说。
Slim给我带来了自由,尤其是在版本4上。它的社区很小,可以预见。它比其他成熟的框架做的要少得多。实际上,这是一个微框架(尽管我用它编写了一个MVC应用程序和REST API服务器)。其他软件包的社区现在很重要。您需要一个容器composer require php-di/php-di
。现在考虑它的社区,因为“您的”应用程序(因此是该框架)是其中的一部分。你有问题?专门针对该软件包寻求帮助。也许使用其他框架的人(或者根本不使用框架的人-如果现在还剩下任何东西)可能会帮助您解决问题。因此,由于您的设置,您已不再依赖于框架。您不喜欢PHP DI,还是找到另一个符合PSR-11的软件包。除了路由器(Nikic的FastRouter应该响起)以外,几乎对Slim的每个部分都适用。尽管到目前为止,它已经成为我看到的其他路由器的基础。
在我结束之前,我也应该说,Lumen和Silex有很多兄弟。我在Lumen经历了一些挫折感;当我说“我无法使用Lumen X.Y版在这里填充一个不太常见的问题”时,他们说“改用Laravel,真的很容易升级”。应该是在上帝的份上!他们有着相同的血统。我不是要那个。如果我想使用Laravel,我会在一开始就选择它,而不是首先使用流明。我选择Lumen的原因有很多,例如作者也写了一些原因(我不知道为什么,但仍然...)。流明应该是重量更轻的微框架,而不是Laravel,而不是垫脚石。
选择Slim也有缺点,但我认为这与感知有关。我想知道在这种情况下我的应用程序正在发生什么。难道不是真的吗?即使我走上了这条坎road的道路,至少我最终知道我的应用程序将完全按照我的命令执行,仅此而已。
感谢您的时间,请原谅我进行格式化。