Download the PHP package ant-framework/middleware without Composer
On this page you can find all versions of the php package ant-framework/middleware. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Please rate this library. Is it a good library?
Informations about the package middleware
Ant框架使用的中间件
中间件运行流程
简单的介绍
- 因为是基于PHP的协同进行的开发,并且运用了一些新特性,要求使用版本为
>=5.6.0
- 每次
yield
后,会挂起当前中间件,执行下一个中间件yield
不是必须的,如果没有yield
,此中间件被执行完毕之后不会被再次回调- 在执行完
function
之后会尝试恢复之前挂起的中间件,恢复的时候可以进行传值- 如果出现了异常,中间件的调用链会停止,然后恢复之前挂起的中间件,尝试使用这些中间件处理异常
- 参考 : http://php.net/manual/zh/language.generators.syntax.php
使用
通过yield
关键词获取重新入栈的信息
then
中闭包函数返回的值,会在恢复中间件的时候传递给每个协同函数,协同函数可以通过$message = yield
这样的语法来获取值(更详细的语法可以去参考PHP手册),根据不同的版本有两种方式来改变重新入栈时传递的值,PHP7以上通过return
就可以改变传递的值,5.6使用第二个yield
返回,注意是第二个
-
PHP7改变传递的值
- PHP5.6改变传递的值
打断中间件调用链
- 打断调用链有两种方式,一种是
yield false
,一种是抛出异常
yield false
这种方式会打断中间件的后续所有调用在中间件的运行过程中,如果出现异常,中间件的往下的调用链会被打断,然后开始回调中间件,回调的过程是以责任链的方式完成,如果
内层
中间件无法处理异常,那么外层
中间件会尝试捕获这个异常,如果一直无法处理,异常将会抛到最顶层来处理,如果处理了这个异常,那么异常回调链将会被打断,程序会返回至中间件启动的位置(内层外层可以参考流程图)
- 注意:在中间件中捕获时要注意,异常是在
yield
处抛出,如果有必须执行并且与异常无关的代码请放在yield
前执行,因为异常的抛出可能会让这些代码无法执行
All versions of middleware with dependencies
PHP Build Version
Package Version
Requires
php Version
>=5.6.0
The package ant-framework/middleware contains the following files
Loading the files please wait ....