PHP父亲::不工作?

时间:2014-10-11 19:07:42

标签: php oop

为什么以下代码返回NULL?我试图让父方法返回父类内的属性值,但由于某种原因,它返回null。

class A {
    public $greeting;

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

    public function getGreeting(){
        print 1;
        return $this->greeting;
    }
}

class B extends A{

    public function __construct(){
    }

    public function getGreetingMessage(){
        parent::getGreeting();
    }
}

$classA = new A('Hello world');
$classB = new B();

var_dump($classB->getGreetingMessage());

在父方法中,“1”正在打印,因此我知道正在调用该方法

3 个答案:

答案 0 :(得分:2)

因为问候留言未在班级b中设定。所以问候消息返回null。

答案 1 :(得分:1)

1)return parent::getGreeting();

2)$classA$classB是不同的实例。无法在$classA

中访问$classB中设置的内容

3)父节点的构造函数不是从classB调用的,而且,在上面classB的初始化中没有提供任何参数(见2)

class A {
    public $greeting;

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

    public function getGreeting(){
        print 1;
        return $this->greeting;
    }
}

class B extends A{

    public function __construct($message){
        parent::__construct($message);
        // or $this->greeting = $message;
    }

    public function getGreetingMessage(){
        return parent::getGreeting();
    }
}

$classA = new A('Hello world');
$classB = new B('Hello world 2');

var_dump($classB->getGreetingMessage());

答案 2 :(得分:1)

您必须在子类中调用父级的构造函数,否则父级构造函数不会运行且类未正确初始化:

class B extends A{

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

所以你很可能想要这个

$classB=new B('Hello World');