2009年9月15日星期二

在xampp中折腾Smarty

我这个自以为懂PHP的蹩脚程序员第一次折腾Smarty,惭愧。。。xampp不自带smarty,所以只能自己安装。不过看了smarty的文档,每次new了一个Smarty的实例之后都要设置一遍参数,麻烦!参考了某文之后,我修改了一个版本,因为本人的蹩脚是出了名的,而且对PHP的理解十分有限,所以如果代码写的让人笑破肚皮,我不承担法律责任的哦。

以下是解决方案,在xampp 1.7.2 for Windows,Windows XP上测试通过:

1. 解压smarty压缩包里的libs目录到c:\xampp\php\smarty\目录下。当然,你可以放到其他地方;

2. 设置php.ini,在include_path参数后面加上;c:/xampp/php/smarty/libs,重启apache;

3. 在smarty目录下创建template_c和cache目录,在项目目录下创建templates和configs目录,你也可以创建在别处或使用其他目录名;

4. 在每个项目的libs目录中创建一个文件,命名为mysmarty.php(或者其他名字,或存在别处),内容如下:


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

class my_smarty extends Smarty
{
function __construct()
{
// 我把PHP4风格的构造函数改成了PHP5风格,不知道有没有错误。
$this->template_dir = 'c:/xampp/htdocs/项目目录/templates';
$this->config_dir = 'c:/xampp/htdocs/项目目录/configs';
$this->compile_dir = 'c:/xampp/php/smarty/templates_c';
$this->cache_dir = 'c:/xampp/php/smarty/cache';
}
}
?>


5. 以后在index.php中调用Smarty的时候可以这样:

require('libs/mysmarty.php');
$smarty = new my_smarty();
$smarty->assign("name", "idevel.cn");
$smarty->assign("title", "欢迎");
$smarty->display("index.tpl");
?>


目前这样一切OK,有问题的话,以后再写出来。

update:
好吧,其实原文的才是正解。Smarty要支持PHP4,所以用了古老的构造函数。我这么改是画蛇添足。等Smarty 3发布,纯PHP5的支持,就不会有这样的问题了。

没有评论:

发表评论