我知道我可以在.tpl
模板文件内使用类别类方法,如下所示:
{assign var='all_categories' value=Category::getCategories()}
但是我如何才能在模板内部初始化Category对象呢?这样__construct
函数就会运行。
我问这个问题是因为当我尝试使用某些Category类函数时,出现此错误:
Using $this when not in object context
答案 0 :(得分:0)
无法通过tpl文件实例化类别,某些类具有公共静态方法来执行此操作,例如,像Db
类,该类具有一个名为getInstance
的类,不幸的是,默认情况下,Category
类中没有类似的东西。您应该将其实例化到一个php文件中并发送给Smarty,或修改类以添加一个对象:
public static $instance = array();
方法:
public static function getInstance($id_category)
{
if (isset(self::$instance[$id_category])) {
return self::$instance[$id_category];
}
return self::$instance[$id_category] = new Category($id_category);
}
现在您可以在tpl中使用了
{assign var='category' value=Category::getInstance(3)}