0

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

 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 语言的作者一时兴起决定的?

4

1 回答 1

2

PHP 就是这么特别(在许多其他方面也是如此)。

考虑到 PHP 在历史上允许您使用静态表示法调用实例方法没有问题,反之亦然,因此最好不要打扰做出决定的原因。

我想这是本着友好的 PHP 精神“我可以假设用户可能想要做 X 并且不知道他们要求的 Y 的区别,但我们不要评判。做 X”。

于 2014-08-21T14:26:42.203 回答