我有以下摘录:
<?php
class Index
{
public function index()
{
echo 'Hello';
}
}
new Index();
它会打印出“ Hello”,而无需显式调用index方法。类名或方法名的任何更改都会使回显静音。为什么PHP会自动调用Index类中的index方法?为什么将类重命名为Index2时,它的处理方式不同?
答案 0 :(得分:1)
这是旧的PHP功能,其中与该类同名的函数被视为构造函数。如documentation中针对构造函数所述:
为了与PHP 3和4向后兼容,如果PHP找不到给定类的__construct()函数,它将按类名搜索旧式构造函数。实际上,这意味着唯一会出现兼容性问题的情况是,该类是否具有用于不同语义的名为__construct()的方法。
还有
警告:旧样式的构造函数在PHP 7.0中已弃用,并将在以后的版本中删除。您应该始终在新代码中使用__construct()。