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
。感谢您的回答和链接。在今天的一次采访中失败了。