Php 为什么下面的代码输出10而不是null?
以下代码输出Php 为什么下面的代码输出10而不是null?,php,oop,Php,Oop,以下代码输出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(); 在旧版本的PHP中,公共函数a被视为类a构造函数。由于类b
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();
在旧版本的PHP中,公共函数a
被视为类a
构造函数。由于类b
中没有构造函数,因此调用类a
构造函数,并将$c
设置为10 因为公共函数a()
是一个构造函数
为了向后兼容,如果PHP5找不到给定类的_construct()函数,并且该类没有从父类继承_construct()函数,它将根据类的名称搜索旧式构造函数
更多信息请参见实际上,您将函数命名为samename作为类,这是一个隐式构造函数。简言之,它与\uu construct()
相同
在OOP中,您必须记住,如果您扩展了一个类,则在创建新实例时会隐式调用它的父构造函数,除非您显式重写构造函数。如果更改函数a()
,它会输出什么?将其重命名为函数aa()
将使其正常运行@如果将其重命名为其他任何内容(包括b()
),则会使输出null
。感谢您的回答和链接。在今天的一次采访中失败了。