为什么这段代码打印"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
http://php.net/manual/en/language.oop5.decon.php为了与PHP 3和PHP 4的向后兼容性,如果PHP找不到给定类的__construct()函数,并且该类没有从父类继承__construct()函数,它将根据类的名称搜索旧式构造函数。
在声明函数a()后自动调用构造函数