2011-03-12 109 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,然后创建一个实例方法,该方法只是为了向后兼容而调用静态方法。