2013-03-14 35 views
0

假設我已經做了類:PHP - 安全替代一類

class abc { 
    function a() { .. } 
} 

在未來,說一個更新的,我做了這個類的一個更新版本,與所有相同的功能,還有一些新的功能和私人變量:

class abc2 { 
    function a() { .. } 
} 

現在,我要的是,而不是更新我的整個代碼查找老班abcabc2取代它,是沒有什麼辦法,在以往任何時候,在我的舊代碼,一個的abc對象被調用,它應該返回abc2。這樣我就不必在我的代碼中更新所有abc實例的類名。

我知道我可以在類abc2中使用extends關鍵字,但我擔心我的私有變量或函數將無法訪問。

+0

重構在你的ide? – 2013-03-14 08:34:26

+0

如何使用界面? – gmaliar 2013-03-14 08:34:28

+0

@Guy,真的不知道使用接口:( – 2013-03-14 08:37:06

回答

4
class abc extends abc2 { 
// don't add any methods or whatever 
} 

class abc2 { 
    function a() { .. } 
} 

這樣,abc2的所有方法與abc相同。至於私人問題,解決這個問題並不容易。要麼重寫所有代碼來修復該類,要麼保護私有方法。至少嘗試使用這種擴展方法,看看是否有任何衝突發生,我當然不希望如此。

一個解決方案應該是有命名空間,你可以重新編碼使用newnamespace \ abc;而不是oldnamespace \ abc;在你的代碼中。然而這也意味着重寫代碼。