2012-08-27 59 views
-2

我需要找到一種方法來跳過case_once錯誤,在案例2中,具有相同名稱的php類在文件中被調用。 我有2個文件a.php和b.php,他們每個都有內部聲明的類A. 在index.php裏我首先包含聲明瞭A類的a.php文件。同樣在index.php中,我必須包含c.php,它裏面有require_once b.php,因此我得到重複的classname錯誤,腳本停止。 我可以爲此找到解決方法嗎? 感謝您的回覆在一個文件中複製php類


讓我更好地解釋一下。 是關於Joomla和我建立一個插件來覆蓋組件模型和視圖。我將模型和視圖類包含在插件中,Joomla使用它們而不是原始組件模型和視圖類。 當組件模塊包含具有require_once的組件原始模型和視圖類時,會出現此問題。 由於我的插件沒有使用原始模型類,因此原始模型類所在的文件不包含在Joomla內部,模塊require_one能夠包含組件模型類,而這些類與我的插件具有相同的名稱那些。 我只能改變我的插件代碼和類,而不是組件類,第二個。

+2

不要用相同的兩個班名稱。期。 – deceze

回答

0

包裹需要呼叫

if(!class_exists('your_class_name')) { 
    require_once('file_name'); 
} 
4

我需要找到一種方式來跳過的情況下,2 PHP類require_once錯誤,用相同的名字,被稱爲在文件中。

不,你不知道。你不應該在同一個文件中有兩個類。 Uhhhmm讓我重述一下。你不能有兩個同名的類(除非命名空間)。但嚴重的是,你不應該在一個文件中有兩個類。

我有2個文件a.php和b.php,他們每個都有內部聲明的類A.

我猜(/希望)他們不是同一類,因爲這會違反(強姦)DRY principle

我可以爲此找到解決方法嗎?

不要複製同一個類。如果兩個類都是不同的名稱空間它。無論是與真正的命名空間的新方式還是老辦法:

namespace Lib\Your\Namespace; 

class Lib_Your_Namespace 
+0

我知道我不能有兩個同名的類,但我不能更改b.php的代碼或刪除它...希望有一個解決方法。 – user1628151

0

我認爲,命名空間 - 這就是你需要

相關問題