手记

EngineResolver.php

<?php

 

namespace Illuminate\View\Engines;

 

use Closure;

use InvalidArgumentException;

 

class EngineResolver

{// engineResolver

    /**

     * The array of engine resolvers.

     *

     * @var array

     */

    protected $resolvers = [];// The array of engine resolvers.

 

    /**

     * The resolved engine instances.

     *

     * @var array

     */

    protected $resolved = [];// The resolved engine instances.

 

    /**

     * 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]);// first to unset it

 

        $this->resolvers[$engine] = $resolver;// set it

    }// Register a new engine resolver.

   // change the new register

 

    /**

     * Resolver an engine instance by name.

     *

     * @param  string  $engine

     * @return \Illuminate\View\Engines\EngineInterface

     * @throws \InvalidArgumentException

     */

    public function resolve($engine)

    {// resolver an engine instance by name.

        if (isset($this->resolved[$engine])) {

            return $this->resolved[$engine];

        }// isset resolved

 

        if (isset($this->resolvers[$engine])) {

            return $this->resolved[$engine] = call_user_func($this->resolvers[$engine]);

        }// isset resolvers

       // call_user_func has been used

 

        throw new InvalidArgumentException("Engine $engine not found.");

    }// throw new exception

}

0人推荐
随时随地看视频
慕课网APP