更改PHP中的扩展类值

更改PHP中的扩展类值,php,class,oop,Php,Class,Oop,当更改主类值时,我希望主类打印出更改后的值,而不是像一个单独的类那样,有没有一种方法可以通过使用接口或在中间放置一些控制器来做到这一点 class Main { private $test = 'init value'; public function set($str) { $this->test = $str; } public function get() { print($this->test); } } class Sub extend

当更改主类值时,我希望主类打印出更改后的值,而不是像一个单独的类那样,有没有一种方法可以通过使用接口或在中间放置一些控制器来做到这一点

class Main {
  private $test = 'init value';
  public function set($str) {
    $this->test = $str;
  }

  public function get() {
    print($this->test);
  }
}
class Sub extends Main{
  public function setMain($str) {
    $this->set($str);    //set Main value
  }
  public function mainValue() {
    print($this->get()); //get value from Main
  }
}

$main = new Main();
$sub = new Sub();

$main->get();            //prints init value
$sub->setMain("end value");
$sub->mainValue();       //prints end value

$main->get();            //prints init value, but id like it to print out end value

不,那不行。父类(您扩展的)不知道(也不应该知道)子类做什么。您有两个独立的对象。更改其中一个不会影响到另一个。也许您需要一个
static
属性,但是我建议您阅读更多关于继承的内容。如果您创建两个
Main
值,您甚至不会得到想要的结果,因为它们是不同的对象。为什么你希望子类有不同的东西?不,那不行。父类(您扩展的)不知道(也不应该知道)子类做什么。您有两个独立的对象。更改其中一个不会影响到另一个。也许您需要一个
static
属性,但是我建议您阅读更多关于继承的内容。如果您创建两个
Main
值,您甚至不会得到想要的结果,因为它们是不同的对象。为什么子类会有不同的东西?