当前位置:主页 > 样式模版 >正文

dota2 7 0改动-ThinkPHP使用Smarty第三方插件方法小结

2021-09-18 219 样式模版

本文实例讲述了ThinkPHP使用Smarty第三方插件的方法。分享给大家供大家参考,具体如下:

如果你在使用ThinkPHP框架的时候不想采用TP自带的dota2 7 0改动系统,而使用第三方的dota2 7 0改动系统,你有很多其他的选择,在这里我仅介绍Smarty这种比较官方,而且比较强大的dota2 7 0改动系统。

由于Smarty兼容PHP4,因此,它的效率会相对低一点点,这个低只是相对的,估计等Smarty啥时候正式放弃PHP4的时候,效率可能会上很大一个台阶。

在TP框架的PlugInsdota2 7 0改动下面,有一个SmartTemplatedota2 7 0改动,里面就是系统自带的Smarty插件。

使用方法如下:

1、在项目的Conf/Config.php文件里加上:

return array( 'THINK_PLUGIN_ON' => true, 'TMPL_ENGINE_TYPE'=>'smarty', );

2、下载好Smarty,并将smarty的libsdota2 7 0改动整个拷至项目的PlugInsdota2 7 0改动下(说明一下,PlugInsdota2 7 0改动可能会不存在,需要自己建立),同时将libsdota2 7 0改动改名为SmartTemplate(希望没有记错,其实也就是与THINKPHP的PlugInsdota2 7 0改动里的SmartyTemplatedota2 7 0改动同名即可),如果你不愿意把dota2 7 0改动改成这个名字,那么,你必须到TP的插件dota2 7 0改动里修改插件文件,使之包含路径正确。

3、注意修改每次修改action或模板文件后删除Temp下的html文件

在这里我要提的方法是于上面不一样的,黑黑

因为我在使用第三方dota2 7 0改动插件的时候,特地看了TP的view.class.php发现了一些很重要的问题,那就是,如果采用第三方dota2 7 0改动插件,那么第三方dota2 7 0改动插件的效率可能不能保证,因为View类的fetch方法在判断是否为第三方插件之间,作了很多TPdota2 7 0改动插件的自有处理,而这些对于使用第三方dota2 7 0改动插件来说,几乎是完全无效的,这些处理可能会给第三方插件带来影响,同时也影响了第三方插件的执行效率。问题已经与流年沟通过,但由于改动可能会很大,或许最近几个版本里,流年都不会尝试作改进吧,一是怕影响了那些已经使用第三方插件的程序,二来如果去除掉这些处理,那么View类可能就不需要了。流年对于这样的情况应该是不愿意看到的。毕竟这也影响了原有系统的架构,估计流年得仔细考虑了……[当然从流年个人来说,肯定是希望大家都使用TP自有的dota2 7 0改动插件,只是我目前对于smarty则是更加熟悉而己],但对于我这个使用者来说,我需要的是临时解决方法,所以,就有了下面的内容。

为了解决这个问题,我只有从View.class.php里下手,因为Action.class.php里有一行:

$this->tpl = View::getInstance();

那么,也就是说 tpl 这个变量是 View 的单例模式,检查了一下View.class.php中的这个getInstance方法,发现里面使用了 get_instance_of 这个函数(这个函数是有一点小BUG的,这里不作解释,但我目前也没有更好的解决方法),于是我对getInstance和__construct两个方法进行了改动,删除了__construct方法,加上了init方法,改动代码如下:

static function getInstance() { get_instance_of(__CLASS__,'init'); init ($type=''){ $type)) { $this->type = strToUpper( $type ); $this->type = strtoupper(C('TMPL_ENGINE_TYPE')); in_array( $this->type, array('PHP','THINK') ) ){ $type = ucfirst( strToLower( $this->type ) ); vendor( $type ); $type(); $this; return } public function if(!empty( }else{ } if ( ! return new } return }

也就是让View类在实例化的时候,同时调用init方法。在这个方法里,我将我自己的dota2 7 0改动插件放到了第三方插件的dota2 7 0改动(Vendor)下。

切记切记:千万不可漏掉最后一句return $this;,其实这就是我所说的get_instance_of的BUG,如果不加这句,那么当type变量为PHP或THINK时,getInstance是无法返回实例的。

新的使用方法步骤如下:

1、修改项目的Conf/Config.php文件:

return array( 'THINK_PLUGIN_ON' => true, 'TMPL_ENGINE_TYPE'=>'TpSmarty', );

2、在TP的Vendordota2 7 0改动下面,创建TpSmarty.php,内容如下:

caching = true; $this->template_dir = TMPL_PATH; $this->compile_dir = CACHE_PATH ; $this->cache_dir = TEMP_PATH ; ?> class public function } }

上面是最简单的写法,实际使用中,这些变量请改为与你自己的站点相配合。

3、根据上面的文件里的include_once函数,将smarty的libsdota2 7 0改动拷贝至项目的PlugInsdota2 7 0改动下,改名为:smarty(只需要与include_once中的dota2 7 0改动相匹配即可)

4、然后,在项目的方法里就可以直接使用:

class IndexAction extends Action{ index(){ $this->assign('test','testss'); $this->display('default/index.html'); public function } } }

只是,使用了插件后,display方法的参数是dota2 7 0改动的全路径,而且不能留空(并非不能解决,只是要改动的代码就会更多,目前这个方法是改动最少的)。

测试一下,是否正常了?呵呵 。

现在,我们把Config里的dota2 7 0改动引擎换回Think,同时在Tpl/default/dota2 7 0改动下建立Indexdota2 7 0改动,里面放上index.html,并修改上面的index()方法,将原来的$this->display('default/index.html');  改为$this->display();  ,试一下,是不是也正常了?

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。



版权保护: 本文由 定结网站建设资源网 原创,转载请保留链接: http://www.21windows.com/RrboX9Pu6n/82.html

网站主人定结网站建设资源网
本文实例讲述了ThinkPHP使用Smarty第三方插件的方法。分享给大家供大家参考,具体如下:如果你在使用ThinkPHP框架的时候不想采用TP自带的dota2 7 0改动系统,而使用第三方的dota2 7 0改动系统,你有很多其他的选择,在这里我仅介绍Smarty这种比较官方,而且比较强大的dota2 7 0改动系统。由于Smarty兼容PHP4,因此,它的效率会相对低一点点,这个低只是相对的,估计等Smarty啥时候正式放弃PHP4的时候,效率可能会上很大一个台阶。在
  • 43533文章总数
  • 22199访问次数
  • 建站天数
  • 推荐文章

    热门文章

    标签

    友情链接