2011-03-12 134 views
0

之前動態添加靜態關鍵字:我想喜歡的東西的功能

if(true) 
define("M_STATIC", "static"); 
else 
define("M_STATIC", ""); 


class A 
{ 

M_STATIC function() // this is not allowed. 
    { 
    //do something my task 
    } 
} 

我想,你知道....我想要什麼。 :)

我正在使用CMS。 (舊cms沒有 靜態但新版本有)所以我想 認爲,我的頁面應該兼容 這兩個版本(這個類擴展了CMS類和這個函數對父函數覆蓋)

回答

3

這實際上是不可能的,實際上:方法是static,或者不是;但它是在編譯時定義的,而不是在執行時定義的。

而在PHP中,沒有預處理器(例如您在C中使用的例子),以進行您所要求的替換。

+0

好的。那麼任何另一種方式來執行此任務? – 2011-03-12 20:51:19

+0

我不認爲有 - 你可能想用兩種方法:一種是靜態的,另一種不是?但不確定爲什麼你會希望一個方法實際上既是靜態的也是非靜態的。 – 2011-03-12 20:53:36

+0

@Manish你需要什麼? – 2011-03-12 20:54:18

0

我不確定做這樣的事情是可能的(哪一種我不這麼認爲),即使這是可能的,在OOP中這不是一個好習慣,它會讓你的代碼很難理解並增加複雜性到它。 我不確定你想要什麼,如果你想要一個靜態函數創建一個類來保存一個靜態的和另一個類,其中包含非靜態函數。

1

由於新版本是靜態的,但舊版本需要非靜態的,我將它定義爲static,然後創建一個實例方法,該方法只是爲了向後兼容而調用靜態方法。