美文网首页
twig如何在自建框架中使用全局变量

twig如何在自建框架中使用全局变量

作者: Mr_Arvin | 来源:发表于2019-03-19 23:45 被阅读0次

    因为最近自建了一个框架,想慢慢的完善,以便自己学习使用。框架中引入了twig模版引擎,今天在使用的时候,发现PHP中的全局变量没法直接用,每次都通过传参数的方式显得太繁琐了。看了symfony的文档,并没有找到自建框架中使用的答案。

    方案一:可以使用templating组件,自带了一个模版引擎,而且官方文档也有相应的介绍。(此处我采用方案二,故这方案不多讨论)

    方案二:
    在我去看twig源码的时候,发现其实twig本身就有配置全局变量的方法addGlobal,要配置直接调用此方法就好了,我这里为了方便使用,采用注入容器的思想,使之在框架启动之时就编译所有配置的全局变量,方便后面直接使用。这里贴出用到的主要代码:

    class App
    {
        protected static $container = [];
        /**
         * 注入
         *
         * @param [type] $key
         * @param [type] $val
         * @return void
         */
        public static function set($key, $val)
        {
            self::$container[$key] = $val;
        }
        /**
         * 获取
         *
         * @param [type] $key
         * @return void
         */
        public static function get($key)
        {
            if (!array_key_exists($key, self::$container)) {
                throw new Exception("not find".$key);
            }
            return self::$container[$key];
        }
    }
    
        /**
         * 1、注入模版引擎对象
         * 2、写入全局变量到模版
         * @return void
         */
        static private function appView()
        {
            $loader = new \Twig_Loader_Filesystem(APP.'/views');
            $twig = new \Twig_Environment($loader, array(
                'cache' => ROOT.'/storage/cache',
                'debug' => DEBUG,
            ));
            App::set('twig',$twig);
            require "config/twigGlobal.php";
        }
    
    <?php
    /**twigGlobal.php
     * 配置模版全局变量
     */
    App::get('twig')->addGlobal('ROOT', ROOT);
    App::get('twig')->addGlobal('PUBLIC', /Public);
    

    相关文章

      网友评论

          本文标题:twig如何在自建框架中使用全局变量

          本文链接:https://www.haomeiwen.com/subject/ruaomqtx.html