我被分配去維護一箇舊的PHP項目。 PHP項目使用Kohana框架。我爲PHP開發人員安裝了Eclipse Oxygen,並創建了一個包含這些PHP代碼的PHP項目。但是,我發現Eclipse Oxygen由於無法解析Kohana框架自動加載的類的引用而出現大量錯誤。因爲,Kohana利用PHP的自動加載功能並更改類名稱。例如,我們在common.php
中有一個名爲common_Core
的類。 Kohana自動加載課程並將課程名稱更改爲common
。Eclipse無法解析由Kohana框架自動加載的類(PHP框架)
在的common.php:
class common_Core {
public static function myFunc1() {
. . .
}
}
在client.php
,我們只是引用這個類名common
。
$result = common::myFunc1();
Eclipse的氧氣將迎來common
如不解決,並建議更改爲common_Core
。其他Eclipse版本(火星,霓虹燈)不會將這些標記標記爲錯誤,但不能使用Ctrl單擊跳轉到該方法。有人使用Kohana框架的自動加載功能來加載你自己的類嗎?你如何讓Eclipse來解決你的課堂?
如前所述,這是一箇舊的項目包含大量的PHP代碼。因此,將common::
的所有參考更改爲common_Core::
可能不是一個好的解決方案。
P.S.我只是有一個想法,將類名從common_Core
更改爲common
,這似乎解決了Eclipse問題。但是,除非使用命名空間,否則這也有類名與其他庫衝突的風險。這個舊的PHP項目不使用命名空間。無論如何,仍然想知道Eclipse是否可以使用Kohana框架與PHP項目一起工作。
感謝您的反饋意見。我在你的評論中讀過Kohana的手冊,並不完全瞭解「common ::」可以引用「common_Core」類,「email ::」類可以引用「email_Core」類。我對這個很老的PHP項目和Kohana框架。仍然嘗試瞭解代碼結構。但是,該代碼已經投入使用多年。所以,這個參考必須工作。也許,最初的開發者在別處沒有類名別名。將深入挖掘並回報。但是,我的直覺是它必須與Kohana框架相關。 – Raymond
是的,開發人員很可能做了某種'__callStatic()',Kohana自動加載器看起來非常直截了當。沒有看到該項目,我無法給出更好的方向...... – Rasclatt
我做了代碼跟蹤,並最終找出原因。在system/core/Kohana.php中,代碼邏輯將創建一個變量來保存字符串「common extends common_Core {}」。然後使用eval()方法來打印這個變量。所以,它動態地創建了這個從「common_Core」擴展的「通用」類定義。 eval()行上面的註釋表示:「透明類的擴展名是使用eval處理的,這是一個令人厭惡的黑客行爲,但它完成了工作。」恕我直言,這種類別別名是一種不好的做法。現在,Eclipse IDE在運行時解釋該行之前不會有類定義。 – Raymond