此錯誤表示同一個類別名稱被定義超過一次。常見於自動載入機制、重複 include、或與內建類別衝突。
<?php
class Foo {}
// ... 程式碼 ...
class Foo {} // 錯誤:重複定義
?>
刪除重複定義,或重新命名。防禦性寫法:
if (!class_exists('SomeClass')) {
class SomeClass {}
}
// a.php
include "some_class.php";
include "some_class.php"; // 重複
// b.php
include "a.php";
include "some_class.php"; // 再次包含
全部改用 include_once / require_once,或使用 PSR-4 自動載入器(Composer)完全避免手動 include。
<?php
class Com {} // Windows 環境下 COM 為內建類別
?>
建立空檔案僅定義該類別,若報錯即為內建類別。
避免使用過於通用的名稱(Com、DB、User 等),改用具體前綴(App_Com、Project_NameSpace\Com)。
spl_autoload_register 註冊的多個載入器是否對同一類別名稱解析到不同檔案。get_declared_classes() 配合 ReflectionClass::getFileName() 追蹤類別來源。if (!class_exists('pageModule')) {
require_once PATH_site . 'fileadmin/scripts/class.page.php';
}
但根本解決仍是規範命名空間、使用 Composer 自動載入、避免手動 include。