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

WBOY
Freigeben: 2016-06-13 13:40:39
Original
941 Leute haben es durchsucht

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

?>

Nach dem Login kopieren

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


?>

Nach dem Login kopieren

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

Nach dem Login kopieren

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

提示的错误所指向的是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);
            }
        }
    }

Nach dem Login kopieren


望各位不吝指教!

------解决方案--------------------
assign需要实例化后才能引用,你的类home中有一句,parent::assign()这句其父类根本没有实例化
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!