Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Routing/MiddlewareNameResolver.php
Строк: 100
<?php

namespace IlluminateRouting;

use 
Closure;

class 
MiddlewareNameResolver
{
    
/**
     * Resolve the middleware name to a class name(s) preserving passed parameters.
     *
     * @param  Closure|string  $name
     * @param  array  $map
     * @param  array  $middlewareGroups
     * @return Closure|string|array
     */
    
public static function resolve($name$map$middlewareGroups)
    {
        
// When the middleware is simply a Closure, we will return this Closure instance
        // directly so that Closures can be registered as middleware inline, which is
        // convenient on occasions when the developers are experimenting with them.
        
if ($name instanceof Closure) {
            return 
$name;
        }

        if (isset(
$map[$name]) && $map[$name] instanceof Closure) {
            return 
$map[$name];
        }

        
// If the middleware is the name of a middleware group, we will return the array
        // of middlewares that belong to the group. This allows developers to group a
        // set of middleware under single keys that can be conveniently referenced.
        
if (isset($middlewareGroups[$name])) {
            return static::
parseMiddlewareGroup($name$map$middlewareGroups);
        }

        
// Finally, when the middleware is simply a string mapped to a class name the
        // middleware name will get parsed into the full class name and parameters
        // which may be run using the Pipeline which accepts this string format.
        
[$name$parameters] = array_pad(explode(':'$name2), 2null);

        return (
$map[$name] ?? $name).(! is_null($parameters) ? ':'.$parameters '');
    }

    
/**
     * Parse the middleware group and format it for usage.
     *
     * @param  string  $name
     * @param  array  $map
     * @param  array  $middlewareGroups
     * @return array
     */
    
protected static function parseMiddlewareGroup($name$map$middlewareGroups)
    {
        
$results = [];

        foreach (
$middlewareGroups[$name] as $middleware) {
            
// If the middleware is another middleware group we will pull in the group and
            // merge its middleware into the results. This allows groups to conveniently
            // reference other groups without needing to repeat all their middlewares.
            
if (isset($middlewareGroups[$middleware])) {
                
$results array_merge($results, static::parseMiddlewareGroup(
                    
$middleware$map$middlewareGroups
                
));

                continue;
            }

            [
$middleware$parameters] = array_pad(
                
explode(':'$middleware2), 2null
            
);

            
// If this middleware is actually a route middleware, we will extract the full
            // class name out of the middleware list now. Then we'll add the parameters
            // back onto this class' name so the pipeline will properly extract them.
            
if (isset($map[$middleware])) {
                
$middleware $map[$middleware];
            }

            
$results[] = $middleware.($parameters ':'.$parameters '');
        }

        return 
$results;
    }
}
Онлайн: 0
Реклама