2010-06-26 43 views
2

是否有辦法在PHP 5.2中獲得__callStatic或類似的功能?針對PHP 5.2的PHP調用靜態解決方法

我正在完成一個PHP框架,並且需要將這個功能用於數據庫ORM類。因此,例如,您可以使用下面的代碼從數據庫表的第2列和第4列中獲取數據,即根據您想要的動態(如我猜想的那樣)動態地聲明方法。

Class::find_by_col2_or_col4(); 

我在PHP 5.3已經做到了這一點,它完美的作品,但我試圖做使用PHP 5.2的相同。

或者是否有一些其他方法來檢索使用PHP 5.2的靜態方法和參數的名稱?

謝謝。

回答

0

未處於靜態容量。從技術上講,Rails,CakePHP等不會靜態地調用這些類型的動態方法。不要進行哲學辯論,但如果向後兼容性是一項要求,則可以改變您的範例並使用__call()。在這種情況下,您可以撥打ModelObject->find_by_col2_or_col4等對象。當然,我明白這可能不是你想聽到的。

這是PHP,可能有某種方式來破解它,但我不相信存在一種本地方法。

+0

謝謝傑森, 我一直在尋找一種方法來完成這個PHP 5.2的,但似乎無法找到任何破解或解決方法。也找不到任何黑客來檢查被調用的靜態函數。 無論如何,依賴於__callStatic的功能只需要Forms和Database ORM模塊,因此需求不是平臺範圍的。 我想對於不能切換到5.3的用戶,他們必須要做5.2兼容的功能。他們仍然可以做所有事情,但不能以最酷的方式數據庫ORM。 乾杯。 – 2010-06-29 01:18:13

+0

祝你好運。聽起來你的做法很整潔,可能值得升級。 – 2010-06-29 02:01:01