无法创建与静态函数同名的函数

时间:2014-08-21 14:23:55

标签: php static-methods instance-methods

当我尝试创建一个与该类上的静态函数同名的实例函数时,我收到以下错误消息:

 Fatal error: Cannot redeclare Module::get_config() in [path]/static-redeclare.php on line 32

我可以在此处找到我用于此测试的完整代码:https://gist.github.com/IQAndreas/ccaebe6d660a7248ca9e

此类错误不会出现在其他语言中,例如Action Script 3和Java。我是否错误地声明了这两种功能,或者PHP是否只是“特殊”,并且不喜欢重复的函数名称,即使它们位于不同的范围内?

如果是后者,是否存在PHP阻止静态和实例函数名称冲突的逻辑原因,还是由PHP语言的作者一时兴起决定?

1 个答案:

答案 0 :(得分:2)

PHP就像那样特别(以及许多其他方式)。

考虑到历史上PHP没有问题让你用静态表示法调用实例方法,反之亦然,决定的原因最好不受干扰。

<子> 我想它是在友好的PHP精神中完成的,“我可以假设用户可能想要做X并且不知道他们要求的Y的区别,但是不要判断。只做X”。