Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\View\Engines;
4
 
5
use Closure;
6
use InvalidArgumentException;
7
 
8
class EngineResolver
9
{
10
    /**
11
     * The array of engine resolvers.
12
     *
13
     * @var array
14
     */
15
    protected $resolvers = [];
16
 
17
    /**
18
     * The resolved engine instances.
19
     *
20
     * @var array
21
     */
22
    protected $resolved = [];
23
 
24
    /**
25
     * Register a new engine resolver.
26
     *
27
     * The engine string typically corresponds to a file extension.
28
     *
29
     * @param  string  $engine
30
     * @param  \Closure  $resolver
31
     * @return void
32
     */
33
    public function register($engine, Closure $resolver)
34
    {
35
        $this->forget($engine);
36
 
37
        $this->resolvers[$engine] = $resolver;
38
    }
39
 
40
    /**
41
     * Resolve an engine instance by name.
42
     *
43
     * @param  string  $engine
44
     * @return \Illuminate\Contracts\View\Engine
45
     *
46
     * @throws \InvalidArgumentException
47
     */
48
    public function resolve($engine)
49
    {
50
        if (isset($this->resolved[$engine])) {
51
            return $this->resolved[$engine];
52
        }
53
 
54
        if (isset($this->resolvers[$engine])) {
55
            return $this->resolved[$engine] = call_user_func($this->resolvers[$engine]);
56
        }
57
 
58
        throw new InvalidArgumentException("Engine [{$engine}] not found.");
59
    }
60
 
61
    /**
62
     * Remove a resolved engine.
63
     *
64
     * @param  string  $engine
65
     * @return void
66
     */
67
    public function forget($engine)
68
    {
69
        unset($this->resolved[$engine]);
70
    }
71
}