123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
-
- namespace Illuminate\View\Engines;
-
- use Closure;
- use InvalidArgumentException;
-
- class EngineResolver
- {
- /**
- * The array of engine resolvers.
- *
- * @var array
- */
- protected $resolvers = [];
-
- /**
- * The resolved engine instances.
- *
- * @var array
- */
- protected $resolved = [];
-
- /**
- * Register a new engine resolver.
- *
- * The engine string typically corresponds to a file extension.
- *
- * @param string $engine
- * @param \Closure $resolver
- * @return void
- */
- public function register($engine, Closure $resolver)
- {
- unset($this->resolved[$engine]);
-
- $this->resolvers[$engine] = $resolver;
- }
-
- /**
- * Resolve an engine instance by name.
- *
- * @param string $engine
- * @return \Illuminate\Contracts\View\Engine
- * @throws \InvalidArgumentException
- */
- public function resolve($engine)
- {
- if (isset($this->resolved[$engine])) {
- return $this->resolved[$engine];
- }
-
- if (isset($this->resolvers[$engine])) {
- return $this->resolved[$engine] = call_user_func($this->resolvers[$engine]);
- }
-
- throw new InvalidArgumentException("Engine [{$engine}] not found.");
- }
- }
|