2011-08-08 41 views
3

我正在寫一個我希望能夠很容易地擴展的類,但是每個變量都需要3或4個函數來支持它。我試圖想出一種可以利用數組或其他數據類型的方式,這樣我就可以編寫強制函數並將它們與每個變量一起使用,而無需編寫更多和更多的代碼,只需簡單地向數組中添加一個新變量並自動處理。有沒有人做過這樣的事情?PHP類的自動調整功能?

+3

你可以舉一個你試圖實現的數據處理的例子嗎?你所指的是可行的,但我需要更多細節來幫助你。 –

+0

這更多的是一個實驗性問題,數據並不是那麼重要。我只是想知道其他人會如何去解決這個問題。我曾想過創建一個單例,並通過一些數據庫交互將它自動擴展。 – Nathan

回答

2

看看PHP magic methods。在調用無法訪問的屬性時,可以使用__get從數據存儲(例如數組)中獲取值,設置__set。當調用不可訪問的方法時,將調用__call方法,因此您可以檢查其中一個您需要的4個方法。請注意,神奇的方法比手動編碼所有方法要慢一些。

1

您可能有興趣在班級中實施__call,作爲全方位的方法。有關更多信息,請參見the documentation。通過這種方式,您的對象將能夠接收方法調用,這些方法實際上並不存在,但是會根據其名稱進行動態調度。你會檢查這個被請求的方法是否與你提到的擴展之一相對應。

0

你在找這樣的嗎?

function myfunc($requiredParameter, $arrayWithOptionalParameters=array()) { 
    if(!empty($arrayWithOptionalParameters['somekey'])) { 
     // Do stuff 
    } 
}