php类中引用smarty的问题???

onepointred 技术总监  2011-08-27 02:05:31
问题概述:
想在类中调用smarty方法,却出现如下错误:
PHP Fatal error: Using $this when not in object context in G:\SVN\YCMS\localhost\core\smarty\sysplugins\smarty_internal_data.php on line 38
下面贴代码,希望各位能帮我下[app/model/home.php已经通过其他页面引入了_Model类]:
app/model/home.php

<?php
/**
* Name: app-model-home
* Author: yinhexi
*/
if(!defined('IN_MODEL')) die('Access Violation Error:app-model-home!');

class home extends _Model {

public static function index() {
parent::assign('title', 'YCMS');
}

}

?>

core/model/index.php

<?php
/**
* Name: core-model-index
* Author: yinhexi
*/
define('IN_MODEL', 1);
include_once(Y_CORE.DS.'config'.DS.'smarty.php'); //引入smarty类

class _Model extends Smarty {

public function __construct() {

}

//检测相关类中是否存在对应方法
protected function instance($c_f,$c_c_m) {
if(!in_array($c_f,get_class_methods($c_c_m))) {
die("Model: Class $c_c_m does not exist in Method $c_f!");
}
}

}


?>

core/config/smarty

<?php
/**
* Name: core-config-smarty
* Author: yinhexi
*/
if(!defined('IN_CORE')) die('Access Violation Error:core-config-smarty!');

include_once(Y_CORE.DS.'smarty'.DS.'Smarty.class.php');

$smarty = new Smarty();
$smarty->template_dir = Y_APP.DS.'view';//设置模版目录
$smarty->compile_dir = Y_CACHE.DS."view_c";//设置编译目录
$smarty->config_dir = Y_APP.DS.'config'.DS.'smarty';//配置目录变量
//$smarty->php_handling = SMARTY_PHP_ALLOW; //不赞成设置为SMARTY_PHP_ALLOW
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";

//compile
#$smarty->compile_check = false;//编译检查变量

//Cache
$smarty->caching = true; //缓存模版的输出
$smarty->cache_dir = Y_CACHE; //存放模版缓存的目录名
#$smarty->cache_lifetime = 1; //缓存生命周期
?>

文件关联都没有问题,有些在这没有显示。

提示的错误所指向的是smarty源代码,在此也贴出:

public function assign($tpl_var, $value = null, $nocache = false)
{
if (is_array($tpl_var)) {
foreach ($tpl_var as $_key => $_val) {
if ($_key != '') {
$this->tpl_vars[$_key] = new Smarty_variable($_val, $nocache);
}
}
} else {
if ($tpl_var != '') {
$this->tpl_vars[$tpl_var] = new Smarty_variable($value, $nocache);
}
}
}


望各位不吝指教!
...全文
130 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
onepointred 2011-09-16
此问题已解决,谢谢!
回复
张小菜1024 2011-09-02
parent::assign 哪来的???
回复
Kogeo 2011-09-02
看看 学习学习。留个脚印
回复
assign需要实例化后才能引用,你的类home中有一句,parent::assign()这句其父类根本没有实例化
回复
相关推荐
发帖
Framework
创建于2008-08-27

4245

社区成员

国内外优秀PHP框架讨论学习
申请成为版主
帖子事件
创建了帖子
2011-08-27 02:05
社区公告
暂无公告