首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不要求调用此方法?

为什么不要求调用此方法?
EN

Stack Overflow用户
提问于 2013-09-29 16:17:23
回答 2查看 76关注 0票数 1

我遇到了这种非常奇怪的行为。以下代码

代码语言:javascript
复制
class TestClass {
    function testClass() {
        echo "Don't show me!";
    }
}

$testing = new TestClass;

执行它的方法testClass而不调用它!但是,如果将testClass重命名为其他任何东西(如testClass1 ),则不会运行。这种行为背后有什么隐藏的“PHP魔法”吗?

编辑。最后,我发现这个问题对PHP长大的忍者来说是微不足道的。作为PHP的新手,我已经学会了使用__construct作为构造函数。随着“遗迹行为”从现代教程中被仔细删除。我很高兴人们意识到这是多么可怕,更改类名而忘了更改构造函数的名称--真是一场噩梦!

EN

Stack Overflow用户

回答已采纳

发布于 2013-09-29 16:20:41

在PHP5 5之前,没有使用__construct方法作为类构造函数。相反,使用了与类同名的方法。

来自文档

为了向后兼容,如果PHP 5无法为给定类找到一个__construct()函数,并且该类没有从父类继承一个函数,那么它将根据类的名称搜索旧的构造函数。实际上,这意味着只有当类有一个名为__construct()的方法用于不同的语义时,才会出现兼容性问题。

创建(空)构造函数(名为__construct的方法)将阻止消息在类初始化时被回显(仅用于

代码语言:javascript
复制
class TestClass {
    function __construct() {

    }
    function testClass() {
        echo "Don't show me!";
    }
}

* 截至PHP 5.3.3,与名称空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不影响非命名空间类。

票数 6
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19080278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档