为什么PHP会自动调用Index类中的index方法?

时间:2018-09-20 20:18:35

标签: php indexing

我有以下摘录:

<?php

class Index
{
    public function index()
    {
        echo 'Hello';
    }
}

new Index();

它会打印出“ Hello”,而无需显式调用index方法。类名或方法名的任何更改都会使回显静音。为什么PHP会自动调用Index类中的index方法?为什么将类重命名为Index2时,它的处理方式不同?

1 个答案:

答案 0 :(得分:1)

这是旧的PHP功能,其中与该类同名的函数被视为构造函数。如documentation中针对构造函数所述:

  

为了与PHP 3和4向后兼容,如果PHP找不到给定类的__construct()函数,它将按类名搜索旧式构造函数。实际上,这意味着唯一会出现兼容性问题的情况是,该类是否具有用于不同语义的名为__construct()的方法。

还有

  

警告:旧样式的构造函数在PHP 7.0中已弃用,并将在以后的版本中删除。您应该始终在新代码中使用__construct()。