将方法绑定到php中的另一种方法

时间:2018-09-08 14:13:30

标签: php laravel

这可能是除了我之外任何人都知道的东西,除了标题之外,我什至都不知道要搜索什么。

laravel等如何在__construct中使用方法中间件来仅在该类中的特定方法上调用它?

public function __construct() {
  $this->middleware('auth')->only(['index']);
}

public function index() {
  //Do something as auth..
}

public function show() {
  //Do something without auth..
}

我进行了课程身份验证:

class Auth
{
  public static function user() {
    //Check is user logged in and redirect if not
  }
}

在主Controller类中,我添加了方法:

public function middleware($who) {
  Auth::$who();
}

public function only(array $methods) {
  //Use middleware on using these methods
}

现在这是我的愚蠢之处:

当我打电话时说:

$this->middleware('user');

在某些方法中,它可以按预期工作。

但是当我在__constructor中使用它时,它将在我调用的所有方法上运行,那么我该如何检查哪些方法应该使用构造函数中的中间件方法呢?

1 个答案:

答案 0 :(得分:0)

快速检查laravel的来源,您将得到答案。

您可以在laravel控制器$this->middleware('auth')->only(['index']);中做到这一点 因为每个控制器都应该扩展laravel提供的抽象控制器。 抽象控制器具有称为middleware的方法,该方法将有关应调用哪种中间件的信息添加到特定的方法/路由。

如果您要从laravel检查中间人,您将找到另一个答案,中间人如何检查他们如何获取并尊重此信息。