【问题标题】:Why do Middleware implements no interface?为什么中间件不实现接口?
【发布时间】:2017-08-14 09:30:04
【问题描述】:

在 Laravel Illuminate\Contracts\Routing\Middleware。

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

有什么原因吗?

【问题讨论】:

  • 它在laravel.com/docs/5.2/upgrade 的弃用部分中被提及,但不幸的是无法了解它被弃用的原因
  • @ChetanAmeta 你可以发表你的评论作为anwser,我会接受的!
  • 添加到答案中。

标签: php laravel laravel-5 laravel-5.2


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    the Relay people gave 对于他们的情况的答案是,因为很多中间件接受闭包(即函数而不是类),这通常不能从 php 的角度进行类型提示,强制使用接口是行不通的。如果没有强制实现一个接口,那么使用一个接口就没有意义了。

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 2017-12-26
      • 2013-01-17
      • 2014-08-19
      • 2012-07-20
      • 2013-06-03
      • 2011-04-04
      相关资源
      最近更新 更多