为什么 PHP 会自动调用索引类中的索引方法?



我有以下狙击:

<?php
class Index
{
public function index()
{
echo 'Hello';
}
}
new Index();

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

这是一个旧的 PHP 功能,其中与类同名的函数被视为构造函数。如构造函数文档中所述:

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

而且,

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

最新更新