在Laravel< 5.2,中间件实现了本合同描述的接口:Illuminate\Contracts\Routing\Middleware
。
现在,用工匠创建的中间件不再实现任何东西了。 the contract was removed没有解释(除非我弄错)。
有原因吗?
答案 0 :(得分:1)
根据official documentation下的“弃用”部分下的laravel 5.2升级指南:
Illuminate\Contracts\Routing\Middleware
合同已被弃用。您的中间件不需要任何合同。此外,TerminableMiddleware
合同也已弃用。无需实现接口,只需在中间件上定义一个terminate
方法即可。
答案 1 :(得分:0)
我还注意到中间件在其他框架(例如Slim)中没有使用接口,并且我读到Relay也没有使用接口。
the Relay people gave之所以如此,是因为许多中间件接受闭包(即函数而不是类),而闭包(通常不是从php的角度来提示类型),因此强制使用接口是行不通的。而且,如果没有任何强制实现接口的实现,那么就没有必要使用一个接口。