扩展时使用父类的方法

时间:2013-02-10 22:05:26

标签: php

可能是一个愚蠢的问题......但是如何正确使用Testb类中的类Test方法而不覆盖它们呢?

<?php
class Test {

    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }

}

<?php

class Testb extends Test {

    public function __construct() {
        parent::__construct($name);
    }

}

<?php

include('test.php');
include('testb.php');

$a = new Test('John');
$b = new Testb('Batman');

echo $b->getName();

1 个答案:

答案 0 :(得分:1)

如果您希望能够使用该参数对其进行初始化,则还需要为Testb构造函数提供$name参数。我修改了你的Testb类,以便它的构造函数实际上接受一个参数。您目前拥有它的方式,您应该无法初始化Testb课程。我使用如下代码:

<?php
class Test {

    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }

}

class Testb extends Test {

    // I added the $name parameter to this constructor as well
    // before it was blank.
    public function __construct($name) {
        parent::__construct($name);
    }

}

$a = new Test('John');
$b = new Testb('Batman');

echo $a->getName();
echo $b->getName();
?>

也许您没有启用错误报告?无论如何,您可以在此处验证我的结果:http://ideone.com/MHP2oX