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



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

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
}
}

在主控制器类中,我添加了方法:

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

现在这就是我愚蠢的地方:

当我打电话时,让我们说:

$this->middleware('user');

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

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

快速检查拉拉维尔的来源,你会得到答案。

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

如果你从拉拉维尔那里检查中间战争,你会发现另一个答案,中间战争如何检查他们如何获得和尊重这些信息。

最新更新