为什么中间件不实现接口?

时间:2017-08-14 09:30:05

标签: php laravel laravel-5 laravel-5.2

在Laravel< 5.2,中间件实现了本合同描述的接口:Illuminate\Contracts\Routing\Middleware

现在,用工匠创建的中间件不再实现任何东西了。 the contract was removed没有解释(除非我弄错)。

有原因吗?

2 个答案:

答案 0 :(得分:1)

根据official documentation下的“弃用”部分下的laravel 5.2升级指南:

Illuminate\Contracts\Routing\Middleware合同已被弃用。您的中间件不需要任何合同。此外,TerminableMiddleware合同也已弃用。无需实现接口,只需在中间件上定义一个terminate方法即可。

答案 1 :(得分:0)

我还注意到中间件在其他框架(例如Slim)中没有使用接口,并且我读到Relay也没有使用接口。

the Relay people gave之所以如此,是因为许多中间件接受闭包(即函数而不是类),而闭包(通常不是从php的角度来提示类型),因此强制使用接口是行不通的。而且,如果没有任何强制实现接口的实现,那么就没有必要使用一个接口。