当我尝试创建一个与该类上的静态函数同名的实例函数时,我收到以下错误消息:
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语言的作者一时兴起决定?
答案 0 :(得分:2)
PHP就像那样特别(以及许多其他方式)。
考虑到历史上PHP没有问题让你用静态表示法调用实例方法,反之亦然,决定的原因最好不受干扰。
<子> 我想它是在友好的PHP精神中完成的,“我可以假设用户可能想要做X并且不知道他们要求的Y的区别,但是不要判断。只做X”。 子>