我遇到了这种非常奇怪的行为。以下代码
class TestClass {
function testClass() {
echo "Don't show me!";
}
}
$testing = new TestClass;执行它的方法testClass而不调用它!但是,如果将testClass重命名为其他任何东西(如testClass1 ),则不会运行。这种行为背后有什么隐藏的“PHP魔法”吗?
编辑。最后,我发现这个问题对PHP长大的忍者来说是微不足道的。作为PHP的新手,我已经学会了使用__construct作为构造函数。随着“遗迹行为”从现代教程中被仔细删除。我很高兴人们意识到这是多么可怕,更改类名而忘了更改构造函数的名称--真是一场噩梦!
发布于 2013-09-29 16:20:41
在PHP5 5之前,没有使用__construct方法作为类构造函数。相反,使用了与类同名的方法。
来自文档
为了向后兼容,如果PHP 5无法为给定类找到一个
__construct()函数,并且该类没有从父类继承一个函数,那么它将根据类的名称搜索旧的构造函数。实际上,这意味着只有当类有一个名为__construct()的方法用于不同的语义时,才会出现兼容性问题。
创建(空)构造函数(名为__construct的方法)将阻止消息在类初始化时被回显(仅用于
class TestClass {
function __construct() {
}
function testClass() {
echo "Don't show me!";
}
}
* 截至PHP 5.3.3,与名称空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不影响非命名空间类。
https://stackoverflow.com/questions/19080278
复制相似问题