0

我正在制作一个基本的购物车,我在管理面板中遇到问题,我正在加载文件夹中的所有模块。当我加载每个文件时,PHP 使用一个类来收集模块信息,如名称、类型等。但是当它加载第二个文件时,它会弹出一个“无法在...中重新声明类 module_info”

所以我有点想知道,我怎样才能让它加载所有模块及其信息(通过所有模块使用的 module_info 类)而不显示这个“重新声明”错误。

我试过'include_once'和'require_once'等,甚至没有设置但没有运气。

 //module - payment
$modulePAYMENT = "<table class='table_result' cellpadding=\"0\" cellspacing=\"0\">";
$handler = opendir("../includes/modules/payment/");
while ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
        if($num == 1) {
            $cla = "hvr";
            $num = 0;
        } else {
            $cla = "blu";
            $num = 1;
        }
    //Load Modules Info
    include_once("../includes/modules/payment/".$file);
    $module_info = new module_info;

    //Get Links
    if(moduleInstalled($module_info->MODULE_code)) {
        $query_MOD = "SELECT * FROM sh_module WHERE code = '".$module_info->MODULE_code."'";
        $exe_MOD = mysql_query($query_MOD);
        $row = mysql_fetch_array($exe_MOD);
        if($row['status']==1) {
            $status = "<a class='link_status_enable pointer' onclick='moduleChangeStatus(".$row['mid'].",0)' title='This module is ENABLED. Click to DISABLE it.'>Enabled</a>";
        } else {
            $status = "<a class='link_status_disable pointer' onclick='moduleChangeStatus(".$row['mid'].",1)' title='This module is DISABLED. Click to ENABLE it.'>Disabled</a>";
        }
        $module_links = "<a class='link_small_lblue' href='sidebox_edit.php?SideboxID=".$row['sid']."'>Settings</a> <a class='link_small_lblue pointer' onclick='deleteModule(".$row['mid'].")'>Uninstall</a><div class='spacer10'></div>".$status;
    } else {
        $module_links = "<a class='link_small_lblue pointer' onclick=\"installModule('".urlencode($file)."')\">Install Module</a>";
    }

    //Add to list
    $modulePAYMENT .= "<tr class='{$cla}' id='page_".$row['pid']."'><td><div style='float:left;padding:0;margin:0;' class='text_medium_white'>".$module_info->MODULE_title."<br>{$module_links}</div><div style='float:right;padding:0;margin:0;text-align:right;'></div></td></tr>";
    }
4

1 回答 1

0

单独查看错误消息,您似乎在每个包含中定义类 module_info 。它应该定义一次并包含在每个模块文件中,为每个模块文件创建一个新实例。即使新包含的模块信息将覆盖以前的模块信息,如果您稍后需要引用它,您也可以将详细信息添加到数组中:

    ...

    $modules_info = 数组();

    而 ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
        如果($num == 1){
            $cla = "hvr";
            $num = 0;
        } 别的 {
            $cla = "蓝光";
            $num = 1;
        }

    //加载模块信息
    include_once("../includes/modules/payment/".$file);

    $modules_info[basename($file)] = $module_info;

    ...
于 2011-06-20T09:14:55.410 回答