检查是否已调用PHP类

时间:2014-10-08 03:59:21

标签: php class

我想在与我需要它运行的文件相同的文件上运行模板引擎,所以我有模板引擎,使{username}等内容变成HTML中的PHP变量,在与处理它的所有内容相同的页面。但是,如果我尝试这样做,我得到一个类已被调用错误,我已经尝试修复此错误,但这是我得到的最接近的,无论如何修复此错误?这是我的代码:

<?php

//error_reporting(0);

if(in_array('NewTemplateHandler', get_declared_classes()))
{

    $template = new NewTemplateHandler("test4.php");
    $template->output();
    //echo "Template has not been called";

}else
{

    echo "Else called";

}

class NewTemplateHandler
{

    protected $file;
    protected $values = array();

    public function __construct($file)
    {

        //$_GLOBALS["ran"] = true;
        $this->file = $file;
        $this->__set("test", "Template Working");
        echo "Template Class Called.";

    }

    public function __set($key, $value)
    {

        $this->values[$key] = $value;
        echo "$key set as $value<br />";

    }

    public function output()
    {

        if(!file_exists($this->file))
        {

            echo "ERROR: Template file not found.";

        }

        $output = file_get_contents($this->file);

        foreach($this->values as $key => $value)
        {

            $find = "{".$key."}";
            $output = str_replace($find, $value, $output);

        }

        //$_GLOBALS["ran"] = true;
        return eval("?>".$output);

    }

}

?>

<br />
Thing-> {test}

1 个答案:

答案 0 :(得分:1)

这就是你需要的。

if(!in_array('NewTemplateHandler', get_declared_classes())) {
    $template = new NewTemplateHandler("test4.php");
    $template->output();
}

你之前做的是:

IF 
    (TRUE) 
THEN 
    START NEW TEMPLATE
ELSE
    ECHO "Else called"

您要做的是检查get_declared_classes()数组中是否