smarty 引用php类,php类中引用smarty的有关问题?

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

问题概述:

想在类中调用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 code<?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 code<?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 code<?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源代码,在此也贴出:

PHP codepublic 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);

}

}

}

望各位不吝指教!

------解决方案--------------------

assign需要实例化后才能引用,你的类home中有一句,parent::assign()这句其父类根本没有实例化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值