Smarty - 更改缓存目录

Smarty - change cache directory

我正在为一个网站使用 Smarty,但我很生气每次启动 Smarty 时都必须声明模板目录、缓存目录和编译目录,就像这样:

$smarty = new Smarty();
$smarty->setCacheDir(__DIR__ . '/cache/smarty/');
$smarty->setCompileDir(__DIR__ . '/cache/smarty_c/');
$smarty->setTemplateDir(__DIR__ . '/templates/');

有没有办法(例如,通过在每个页面上加载的配置文件中定义变量)一劳永逸地告诉 Smarty 这些目录是哪些,这样我就不必每次都告诉它时间?

我通过创建一个扩展了 Smarty class 的新 class 解决了这个问题,但我仍然愿意接受新的答案。

class MySmarty extends Smarty
{
    const SMARTY_TEMPLATES = __DIR__ . '/../templates/';
    const SMARTY_COMPILED  = __DIR__ . '/../cache/smarty_c/';
    const SMARTY_CACHE     = __DIR__ . '/../cache/smarty/';

    public function __construct()
    {
        $this->setTemplateDir(self::SMARTY_TEMPLATES);
        $this->setCompileDir(self::SMARTY_COMPILED);
        $this->setCacheDir(self::SMARTY_CACHE);
        parent::__construct();
    }
}