• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-24) 20次浏览 已收录 0个评论

php类中引用smarty的问题???
问题概述/本文来源gaodai#ma#com搞*!代#%^码网%搞代gaodaima码
想在类中调用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

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?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

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?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

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?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 code

<!---ecms Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 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);            }        }    }

望各位不吝指教!

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php类中引用smarty的有关问题?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址