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

WBOY
Release: 2016-06-13 13:40:39
Original
985 people have browsed it

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
<!--

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');
    }
        
}

?>

Copy after login

core/model/index.php
PHP code
<!--

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!");
        }
    }
        
}


?>

Copy after login

core/config/smarty
PHP code
<!--

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; //缓存生命周期
?>

Copy after login

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

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

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);
            }
        }
    }

Copy after login


望各位不吝指教!

------解决方案--------------------
assign需要实例化后才能引用,你的类home中有一句,parent::assign()这句其父类根本没有实例化
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template