Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将对象传递给laravel中间件_Php_Laravel_Dependency Injection_Laravel 5_Middleware - Fatal编程技术网

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