App\Providers\RoutingServiceProvider::registerInstanceMacro PHP Method

registerInstanceMacro() protected method

Register Router Macro called Instance 플러그인에에서 등록한 route pattern 형태로 등록하여 instance route 를 찾을 수 있도록 하는 매크로 등록
protected registerInstanceMacro ( Router $router ) : void
$router Illuminate\Routing\Router to register macro
return void
    protected function registerInstanceMacro(Router $router)
    {
        static $seq = 1;
        $instanceMacro = function ($key, Closure $callback, $routeOptions = null) use(&$seq) {
            $pattern = '{instanceGroup' . $seq++ . '}';
            $attributes = ['prefix' => $pattern, 'module' => $key, 'middleware' => ['access']];
            if ($routeOptions !== null and is_array($routeOptions)) {
                $routeOptions = array_except($routeOptions, ['prefix', 'middleware']);
                $attributes = array_merge($attributes, $routeOptions);
                if (isset($routeOptions['middleware'])) {
                    $attributes['middleware'] .= '|' . $routeOptions['middleware'];
                }
            }
            $router = $this;
            app('events')->listen('router.before', function ($request, $response) use($router, $attributes, $callback) {
                $router->group($attributes, $callback);
            });
        };
        $router->macro('instance', $instanceMacro);
    }