2010-06-16 19 views
1

是否有方法可以將請求捕獲到不存在的類。捕獲對不存在的類的請求(不自動加載)

我正在尋找類似__call()和__static()的東西,但對於類而不是類中的方法。我是不是談論自動加載。我需要能夠中斷請求並重新路由它。

想法?

回答

2

我不知道的攔截

$variable = new Classname(); 

的任何方式,而不極其資源消耗之類的東西反射或執行之前解析腳本文件。

就我所見,自動加載是最接近你的地方。

如果需要要做到這一點,你可能要建立一個自定義工廠函數

$variable = newClass("Classname", $arg1, $arg2, $arg3); 

,做你的攔截那裏。

+0

我很害怕這個。是的,在這種情況下工廠不太可行。它不需要前進,但會更清潔。感謝您的反饋。 – Spot 2010-06-16 22:05:22

2

我不是在談論自動加載。 I 需要能夠中斷 請求並重新路由它。

想法?

我不相信自動加載無法做到你所需要的。如果有未定義類的請求,autoload可以加載相應的類文件,該文件將包含具有反射和__call/__ get等組合的類,並且能夠處理該請求。

+0

+1。你甚至可以在自動載入中創建一個存根類,前提是你不打算在以後真正加載真正的類。 – 2010-06-16 22:24:45

+0

你也可以從自動加載函數中拋出一個異常(只要確保它是spl_autoload棧上的最後一個自動加載器),你可以隨後捕捉和處理任何你想要的東西。 – Mchl 2012-02-15 08:11:55