PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

smarty设置封装问题

原创
2016-06-20 12:37:27 994浏览

刚开始看smarty 安装成功了现在想把smarty路径什么的封装到一个拓展类里面不知道为什么老是报错 哪位大神帮忙看一看

Fatal error: Uncaught Error: Call to a member function create() on null in D:\xampps\htdocs\。。。。s\smarty_internal_templatebase.php(109): Smart in D:\xampps\htdocs\xampps\ss\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 327

define('BASE_PATH',$_SERVER['DOCUMENT_ROOT']);define('SMARTY_PATH','/xampps/ss/smarty/');require BASE_PATH.SMARTY_PATH."Smarty.class.php";          // 调用Smarty文件class SmartyProject extends Smarty{          // 定义类,继承Smarty父类	public function __construct(){                    // 定义构造方法,配置Smarty模板               $this->Smarty();		$this->template_dir = BASE_PATH.SMARTY_PATH."templates/"; // 指定模板文件存储在templates文件夹内		$this->compile_dir = BASE_PATH.SMARTY_PATH."templates_c/";		$this->config_dir = BASE_PATH.SMARTY_PATH."configs/";		$this->cache_dir = BASE_PATH.SMARTY_PATH."cache/";	}}?>


代码手册上直接复制下来的

我的版本是3.1


回复讨论(解决方案)

一般这么写

require('Smarty-3.1.18/libs/Smarty.class.php');class mySmarty extends Smarty {  public $tplname = [];  function __construct($tpl) {	parent::__construct();	$this->template_dir = dirname(__FILE__) . '/buffer/templates/';	$this->compile_dir = dirname(__FILE__) . '/buffer/templates_c/';	$this->config_dir = dirname(__FILE__) . '/buffer/configs/';	$this->cache_dir = dirname(__FILE__) . '/buffer/cache/';   }}

public function __construct(){
你重写了构造函数,所以需要调用一下父类的构造函数。

class SmartyProject extends Smarty{          // 定义类,继承Smarty父类    public function __construct(){                    // 定义构造方法,配置Smarty模板       parent::__construct();       $this->Smarty();        $this->template_dir = BASE_PATH.SMARTY_PATH."templates/"; // 指定模板文件存储在templates文件夹内        $this->compile_dir = BASE_PATH.SMARTY_PATH."templates_c/";        $this->config_dir = BASE_PATH.SMARTY_PATH."configs/";        $this->cache_dir = BASE_PATH.SMARTY_PATH."cache/";    }}

谢谢各位

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。