关于编写smarty扩展类遇到的问题

本人初学smarty,根据旧的smarty manual 编写smarty 扩展类出现如下错误提示:

( ! ) Fatal error: Uncaught exception 'SmartyException' with message 'PHP5 requires you to call __construct() instead of Smarty()' in F:\wamp\www\libs\smarty-v3.13\libs\sysplugins\smarty_internal_templatebase.php on line 803
( ! ) SmartyException: PHP5 requires you to call __construct() instead of Smarty() in F:\wamp\www\libs\smarty-v3.13\libs\sysplugins\smarty_internal_templatebase.php on line 803
Call Stack

原因在于新版php要求用统一的构造函数__construct进行类初始化,不能使用类名。

根据第二点提示就能了解到

还有一点就是在子类构造函数中调用父类构造函数必须使用parent::__construct()进行初始化。


如果初学者根据smarty手册进行学习,那么建议php和smarty版本必须下载对应手册的版本,以免纠结。

// load Smarty library
require('Smarty.class.php');

// The setup.php file is a good place to load
// required application library files, and you
// can do that right here. An example:
// require('guestbook/guestbook.lib.php');是一个很好的加载应用程序的类库文件(就是扩展类)
//例如你可以在index文件里包含它

class Smarty_GuestBook extends Smarty {

 function Smarty_GuestBook() {
 
 		// Class Constructor. These automatically get set with each new instance.
 //类构造函数.创建实例的时候自动配置

		$this->Smarty();

		$this->template_dir = '/web/www.mydomain.com/smarty/guestbook/templates/';
		$this->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
		$this->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
		$this->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/'; 
		
		$this->caching = true;
		$this->assign('app_name','Guest Book');
 }

}

则更改后如下

class Smarty_GuestBook extends Smarty {

 function _construct() {
 
 		// Class Constructor. These automatically get set with each new instance.
 //类构造函数.创建实例的时候自动配置

		parent::__construct();

		$this->template_dir = '/web/www.mydomain.com/smarty/guestbook/templates/';
		$this->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
		$this->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
		$this->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/'; 
		
		$this->caching = true;
		$this->assign('app_name','Guest Book');
 }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值