函数定义与PHP中的类同名


Function definition same name for class in PHP

为什么这段代码打印"AA"如果我给我的类名相同的名字我的函数到我的类

class A{
     public function a() {
        echo 'A';
    }
}
$a = new A();
$a->a(); // AA

谢谢!

这是因为,您的每一行调用a(),因为它是以类命名的,它被用作类A的构造函数。

通常您会使用__construct -函数,它将充当构造函数,但由于没有调用__construct函数,因此将调用以类命名的函数。所以实际上你的输出看起来像:

$a = new A(); // A
$a->a(); // A

累积成输出AA

为了与PHP 3和PHP 4的向后兼容性,如果PHP找不到给定类的__construct()函数,并且该类没有从父类继承__construct()函数,它将根据类的名称搜索旧式构造函数。

http://php.net/manual/en/language.oop5.decon.php

在声明函数a()后自动调用构造函数