Viewing file: PendingSingletonResourceRegistration.php (5.28 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Illuminate\Routing;
use Illuminate\Support\Arr; use Illuminate\Support\Traits\Macroable;
class PendingSingletonResourceRegistration { use CreatesRegularExpressionRouteConstraints, Macroable;
/** * The resource registrar. * * @var \Illuminate\Routing\ResourceRegistrar */ protected $registrar;
/** * The resource name. * * @var string */ protected $name;
/** * The resource controller. * * @var string */ protected $controller;
/** * The resource options. * * @var array */ protected $options = [];
/** * The resource's registration status. * * @var bool */ protected $registered = false;
/** * Create a new pending singleton resource registration instance. * * @param \Illuminate\Routing\ResourceRegistrar $registrar * @param string $name * @param string $controller * @param array $options * @return void */ public function __construct(ResourceRegistrar $registrar, $name, $controller, array $options) { $this->name = $name; $this->options = $options; $this->registrar = $registrar; $this->controller = $controller; }
/** * Set the methods the controller should apply to. * * @param array|string|mixed $methods * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function only($methods) { $this->options['only'] = is_array($methods) ? $methods : func_get_args();
return $this; }
/** * Set the methods the controller should exclude. * * @param array|string|mixed $methods * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function except($methods) { $this->options['except'] = is_array($methods) ? $methods : func_get_args();
return $this; }
/** * Indicate that the resource should have creation and storage routes. * * @return $this */ public function creatable() { $this->options['creatable'] = true;
return $this; }
/** * Indicate that the resource should have a deletion route. * * @return $this */ public function destroyable() { $this->options['destroyable'] = true;
return $this; }
/** * Set the route names for controller actions. * * @param array|string $names * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function names($names) { $this->options['names'] = $names;
return $this; }
/** * Set the route name for a controller action. * * @param string $method * @param string $name * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function name($method, $name) { $this->options['names'][$method] = $name;
return $this; }
/** * Override the route parameter names. * * @param array|string $parameters * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function parameters($parameters) { $this->options['parameters'] = $parameters;
return $this; }
/** * Override a route parameter's name. * * @param string $previous * @param string $new * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function parameter($previous, $new) { $this->options['parameters'][$previous] = $new;
return $this; }
/** * Add middleware to the resource routes. * * @param mixed $middleware * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function middleware($middleware) { $middleware = Arr::wrap($middleware);
foreach ($middleware as $key => $value) { $middleware[$key] = (string) $value; }
$this->options['middleware'] = $middleware;
return $this; }
/** * Specify middleware that should be removed from the resource routes. * * @param array|string $middleware * @return $this|array */ public function withoutMiddleware($middleware) { $this->options['excluded_middleware'] = array_merge( (array) ($this->options['excluded_middleware'] ?? []), Arr::wrap($middleware) );
return $this; }
/** * Add "where" constraints to the resource routes. * * @param mixed $wheres * @return \Illuminate\Routing\PendingSingletonResourceRegistration */ public function where($wheres) { $this->options['wheres'] = $wheres;
return $this; }
/** * Register the singleton resource route. * * @return \Illuminate\Routing\RouteCollection */ public function register() { $this->registered = true;
return $this->registrar->singleton( $this->name, $this->controller, $this->options ); }
/** * Handle the object's destruction. * * @return void */ public function __destruct() { if (! $this->registered) { $this->register(); } } }
|