[李景山php]每天laravel-20161109|ViewServiceProvider.php

來源:互聯網
上載者:User

標籤:laravel

<?phpnamespace Illuminate\View;use Illuminate\View\Engines\PhpEngine;use Illuminate\Support\ServiceProvider;use Illuminate\View\Engines\CompilerEngine;use Illuminate\View\Engines\EngineResolver;use Illuminate\View\Compilers\BladeCompiler;// cool namespaceclass ViewServiceProvider extends ServiceProvider{// ViewServiceProvider extends something    /**     * Register the service provider.     *     * @return void     */    public function register()    {// a register group function        $this->registerEngineResolver();// engine resolver        $this->registerViewFinder();//view finder        $this->registerFactory();// factory    }    /**     * Register the engine resolver instance.     *     * @return void     */    public function registerEngineResolver()    {// register the engine resolver instance        $this->app->singleton(‘view.engine.resolver‘, function () {            $resolver = new EngineResolver;            // Next we will register the various engines with the resolver so that the            // environment can resolve the engines it needs for various views based            // on the extension of view files. We call a method for each engines.            foreach ([‘php‘, ‘blade‘] as $engine) {                $this->{‘register‘.ucfirst($engine).‘Engine‘}($resolver);            }// foreach this array            return $resolver;// a anonymous function        });// a wrap function ,    }    /**     * Register the PHP engine implementation.     *     * @param  \Illuminate\View\Engines\EngineResolver  $resolver     * @return void     */    public function registerPhpEngine($resolver)    {        $resolver->register(‘php‘, function () {            return new PhpEngine;        });    }//use resolver register ,type and instance    /**     * Register the Blade engine implementation.     *     * @param  \Illuminate\View\Engines\EngineResolver  $resolver     * @return void     */    public function registerBladeEngine($resolver)    {//register the blade engine implementation        $app = $this->app;// set app        // The Compiler engine requires an instance of the CompilerInterface, which in        // this case will be the Blade compiler, so we‘ll first create the compiler        // instance to pass into the engine so it can compile the views properly.        $app->singleton(‘blade.compiler‘, function ($app) {            $cache = $app[‘config‘][‘view.compiled‘];            return new BladeCompiler($app[‘files‘], $cache);        });//The compiler engine require an instance of the compilerinterface,which in       //this case will be the blade compiler, so we‘ll first create the compiler       // instance to pass into the engine so it can compile the views properly.        $resolver->register(‘blade‘, function () use ($app) {            return new CompilerEngine($app[‘blade.compiler‘]);        });// use this register to register blade    }    /**     * Register the view finder implementation.     *     * @return void     */    public function registerViewFinder()    {        $this->app->bind(‘view.finder‘, function ($app) {            $paths = $app[‘config‘][‘view.paths‘];            return new FileViewFinder($app[‘files‘], $paths);        });// bind something i hate this type to trans parameters    }//register the view finder implementation    /**     * Register the view environment.     *     * @return void     */    public function registerFactory()    {//register the view environment       // like register Factory        $this->app->singleton(‘view‘, function ($app) {            // Next we need to grab the engine resolver instance that will be used by the            // environment. The resolver will be used by an environment to get each of            // the various engine implementations such as plain PHP or Blade engine.            $resolver = $app[‘view.engine.resolver‘];           // Next we need to grab           // get the engine resolver            $finder = $app[‘view.finder‘];// get finder            $env = new Factory($resolver, $finder, $app[‘events‘]);// instance factory            // We will also set the container instance on this view environment since the            // view composers may be classes registered in the container, which allows            // for great testable, flexible composers for the application developer.            $env->setContainer($app);//set container            $env->share(‘app‘, $app);// share something           // we will also set the container instance on this view environment since the view           // composers may be classes registered in the container, which allows           // for great testable, flexible composers for the application developer.           // a good composers            return $env;        });    }}


本文出自 “專註php 群號:414194301” 部落格,請務必保留此出處http://jingshanls.blog.51cto.com/3357095/1847096

[李景山php]每天laravel-20161109|ViewServiceProvider.php

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.