如何在父类中设置属性并在子类中使用它?

时间:2014-03-07 10:25:10

标签: php oop

我希望以下代码可以写“bar”,但getFoo会返回NULL

该代码有什么问题,我该如何解决?

<?php

class A {
    protected $foo;

    public function getFoo() {return $this->foo;}
    public function setFoo($foo) {$this->foo = $foo;}
}

class B extends A{}

$a = new A();
$a->setFoo("bar");

$b = new B();

echo $b->getFoo();

2 个答案:

答案 0 :(得分:2)

我不确定你在做什么,我很确定你应该仔细阅读继承和对象是如何工作的。您正在指定2个类,这是一个用于构建对象的模板。 instanciate 2对象$ a和$ b但这两个对象不共享数据。

您可以使用静态变量来执行您想要的操作但我不确定您要实现的目标:

<?php

class A {
    protected static $foo;

    public function getFoo() {return self::$foo;}
    public function setFoo($foo) {self::$foo = $foo;}
}

class B extends A{}

$a = new A();
$a->setFoo("bar");

$b = new B();

echo $b->getFoo();

输出:“bar”

答案 1 :(得分:0)

你的期望是错误的。 $a$b是不同的实例。您在一个实例中设置$foo,然后创建另一个不了解第一个实例的实例。