使用Slim中间件

Slim是一个提供路由功能的小型PHP框架,这个框架提供了一个强大并且有特色的中间件的概念。Slim实现了Rack协议,在很多Rudy框架中实现的通用管道框架。然后中间件可以用来包装程序,并且能够访问并影响程序的环境。

对于各种不同的需要筛选服务的Slim项目来说中间件是一个很有说服力的解决方案。我会解释中间件是怎样工作,并分享一个简单的缓存实例,说明一下你可以怎么实现自定义的中间件。

理解中间件

Slim文档比喻Slim框架就像一个洋葱,洋葱的每一层都是一个中间件。更好的理解是,让我们假设我们正在编写一个有验证机制和缓存的程序。我们的架构可能看起来像以下的结构:

middleware

 

该代码是负责生成被几层中间件包裹的页面内容,最重要的是验证逻辑和缓存逻辑。

执行的流程是经过每一层,并判断是允许到下一个或是跳出。首先进行检查以验证用户身份。如果不是,流程中断并反馈HTTP 401状态。然后检查看看缓存的拷贝是否可用。如果是,流程中断并返回的页面的缓存开呗。其他层的中间件可能直到最终负责生成页面的流程到达时才会生成在。

当我们的中间件方法返回,执行流程的气泡回到了他们。剩下的逻辑缓存中间件,例如,将为缓存页面内容以备后用。

中间件的实现

看如何去实现自定义中间件,让我们看看代码,可以参考上面的缓存中间件。

实施任何基本的Slim中间件组件的要求实际上是相当小的。我们只需要写一个类,并重写call()并 slimmiddleware延伸方法。中间件的切入点是这个call()方法,我们可以回到从(从而中断执行流)或调用下一层。