0

私は基本的なショッピング カートを作成していますが、管理パネルでフォルダー内のすべてのモジュールを読み込んでいるという問題があります。各ファイルをロードすると、PHPはクラスを使用して名前、タイプなどのモジュール情報を収集します.しかし、2番目のファイルをロードすると、「クラス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 = 配列();

    while ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
        if($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 に答える