几个小时前,我们推出了Expressive1.0。
这是ZF3计划的一个巨大里程碑;我什至称它为基石。它标志着项目方向的巨大转变,回归其作为组件库的根源。然而,Expressive本身也预示着我们设想的PHP应用程序的未来:由分层的、单一用途的PSR-7中间件组成。
我不会详细介绍Expressive1.0版本;您可以在ZendFramework博客上阅读它。
令我兴奋的是,这标志着我对PSR-7的努力取得了成果。由于我在node.js中使用中间件取得的成功,我开始研究PSR-7,并希望在PHP中看到类似的生态系统。
今天,我们有:
- 接力赛
- Slim(v3)
- Penny
- Expression
可能还有许多其他人。生态系统已经蓬勃发展;看看Packagist上的PSR-7包就知道了!很可能,如果您需要通过中间件完成某些事情,那么有人已经编写了它;如果没有,您可能可以用几行代码编写它。
Expressive开始时我随口说我想创建一个项目,该项目对Stratigility(ZFPSR-7中间件基础)来说就像Express对连接一样—换句话说,一个提供最常需要的功能的微框架在编写Web应用程序和API时,仅此而已。我在Connect和Express中看到的是,开发人员能够编写单一用途的中间件,共享它,并分层中间件来创建复杂的应用程序。Express在Connect之上分层的功能简化了路由中间件的最常见问题,而Connect提供了一个强大、简单的运行时。
Enrico对这个概念特别兴奋,并在去年夏天开始行动,从那以后一直是一股旋风般的活动。然后其他人开始玩代码,贡献想法,验证方法,并提出新的方向。我们现在拥有一个在灵活性上可以与zend-mvc相媲美的微框架,同时保留了我们简单和极简主义的核心原则。
我如何知道该方法有效?该站点已经在Expressive上运行。我们的许多用户和贡献者已经在其上运行。但我读过的最好的验证来自我们多产的ZendFramework贡献者之一MichaelGallego,在最近的一个主题中:
对我来说,使用Zend\Mvc(以及它周围的生态系统)的唯一原因是模块生态系统提供的设施。但即使在那种情况下,我也发现中间件哲学使它变得容易得多。您不再需要安装试图映射到mvc中的Zend\Authentication,花费大量时间来了解它的工作原理……想要身份验证吗?只需分析您的需求,然后砰的一声,十行字母,就完成了。
对我来说,使用Zend\Mvc(以及它周围的生态系统)的唯一原因是模块生态系统提供的设施。但即使在那种情况下,我也发现中间件哲学使它变得容易得多。您不再需要安装试图映射到mvc中的Zend\Authentication,花费大量时间来了解它的工作原理……想要身份验证吗?只需分析您的需求,然后砰的一声,十行字母,就完成了。
那种评论和认识正是我将近两年前在innode.js工作时所经历的。而现在,今天,它已在PHP中成为现实。