我正在制作一个基本的购物车,我遇到了一个问题,在管理面板中,我正在加载文件夹中的所有模块。当我加载每个文件时,PHP使用一个类来收集模块信息,如Name,Type等。但是当它加载第二个文件时,它会显示“无法重新声明类module_info in ...”
所以我想知道,我怎样才能加载所有模块及其信息(通过所有模块使用的module_info类)并且不显示这个'redeclare'错误。
我尝试了'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>";
}
答案 0 :(得分:0)
单独查看错误消息,您似乎在每个包含中定义类module_info。它应该被定义一次,并包含在每个模块文件中,为每个模块文件创建一个新实例。即使新包含的模块信息将覆盖之前的模块信息,如果您需要稍后引用它,也可以将其添加到数组中:
... $modules_info = array(); 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); $modules_info[basename($file)] = $module_info; ...