以下代码输出10
。那是为什么?
<?php
class a{
var $c;
public function a(){
$this->c=10;
}
}
class b extends a{
public function print_a(){
print $this->c;
}
}
$b=new b;
$b->print_a();
答案 0 :(得分:7)
因为public function a()
是构造函数。
了解详情为了向后兼容,如果PHP 5找不到给定类的__construct()函数,并且该类没有从父类继承,它将搜索旧式构造函数,其名称为类。
答案 1 :(得分:3)
在旧版本的PHP中public function a
被视为class a
构造函数。由于class b
中没有构造函数,因此调用class a
构造函数并将$c
设置为10;
答案 2 :(得分:2)
嗯,你实际上将你的函数命名为与类相同的名字,这是一个隐式构造函数。所以简而言之,它与__construct()
相同。
在OOP中你必须记住,如果扩展一个类,那么在创建一个新实例时会隐式调用它的父构造函数,除非你明确地覆盖了构造函数。