Php 将对象传递给laravel中间件
根据,可以使用路由文件中的静态值对中间件进行参数化: 如果我需要通过服务怎么办Php 将对象传递给laravel中间件,php,laravel,dependency-injection,laravel-5,middleware,Php,Laravel,Dependency Injection,Laravel 5,Middleware,根据,可以使用路由文件中的静态值对中间件进行参数化: 如果我需要通过服务怎么办 我这样做的动机是避免正面,因为即使它们被认为是可模仿的,我在第一次尝试时已经遇到了问题。mocky/mocky做了一些疯狂的评估,我不想调试它。本质上,某些类被声明了两次,PHP被致命错误阻塞。发生这种情况可能是因为我错误地遵循了这个示例,但让我们就此为止。我不想依赖外表 我不想了解为什么Facades是很棒的,因为构造函数中的依赖声明足以让我感到高兴 我试图遵循route操作,但我无法理解route::pars
我这样做的动机是避免正面,因为即使它们被认为是可模仿的,我在第一次尝试时已经遇到了问题。mocky/mocky做了一些疯狂的评估,我不想调试它。本质上,某些类被声明了两次,PHP被致命错误阻塞。发生这种情况可能是因为我错误地遵循了这个示例,但让我们就此为止。我不想依赖外表 我不想了解为什么Facades是很棒的,因为构造函数中的依赖声明足以让我感到高兴
我试图遵循route操作,但我无法理解route::parseAction($action)中发生了什么。中间件在哪里实例化?是否有一种标准的方法将对象传递给中间件?如果希望将服务传递给中间件,则需要将其声明为中间件构造函数的依赖项。以Laravel应用程序中默认存在的RedirectIfAuthenticated中间件为例,它获取Guard对象,您也可以通过Authfacade访问该对象
class RedirectIfAuthenticated
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
*
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
//rest of the code
顺便说一句,facade是不可模仿的,因为它有一个静态方法(不是我的代码!),而不是通过facade访问器委托给服务。
class RedirectIfAuthenticated
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
*
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
//rest of the code