我希望以下代码可以写“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();
答案 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
,然后创建另一个不了解第一个实例的实例。