PHP中可能存在的多实例对象问题

时间:2009-01-21 16:32:45

标签: php class object instantiation

我正在第35行的page.class.php中的非对象上调用“成员函数process_data()”,即使该对象已被调用。

这是index.php提取,显示即时对象

// require our common files
require("modules/module.php");
require("registry/objects/datetime.class.php");
require("registry/objects/page.class.php");


// load in all the objects
$datetime = new dateandtime;
$page = new page;
$module = new module;

然后传递给Process类

        require("template.class.php");
        $template = new template($php_path . "controllers/themes/adm/" . $page . ".html");

        // Place in both commonly used language and page specific language
        $template->language($php_path . "controllers/language/en/adm/common.php");
        $template->language($php_path . "controllers/language/en/adm/" . $page . ".php");

        // Tell the page's module to load in data it needs
        $module->process_data("module_" . $page);

        // Output the final result
        $template->output();

此时PHP正在抛出错误。 module.php文件的内容如下

class module {

    public function process_data ($child) {
        require($child . ".php");
        read_data();
        return true;
    }
}

我已经尝试将实例声明移动到第二个粘贴代码中,但这会产生更多错误,因为“模块”调用的类也会使用某些“模板”类 - 因此会出现同样的问题更进一步。

我弄错了什么,或者完全失踪了,我确定这是后者,但我真的需要帮助。感谢

1 个答案:

答案 0 :(得分:0)

当我尝试调用object方法时,它看起来好像$ module不在范围内。你可以在$ module-> process_data(“module_”。$ page)之前尝试var_dump($ module)。这个功能的结果是什么?快速解决方案可能是声明$ module全局,但总体上不是一个好主意(但你可以检查它是否有效)。