1

我正在尝试将 OOP 与 PHP 结合使用,但我对一些类继承的东西感到有些困惑。

这是我用来尝试学习这些工作方式的几个简单课程。我想简单地在子类的调用(父)类中设置一个变量。从我读过的示例看来,这应该可以工作,但是子类无法设置父变量:

class test {
    private $myvar;
    private $temp;

    function __construct(){
        $this->myvar = 'yo!';
        $temp = new test2();
        $temp->tester();
        echo $this->myvar;
    }

    public function setVar($in){
        $this->myvar = $in;
    }

}

class test2 extends test{
    function __construct(){

    }

    public function tester(){
        parent::setVar('yoyo!');
    }

}


$inst = new test(); // expecting 'yoyo!' but returning 'yo!'

谢谢你的帮助。

4

2 回答 2

6

看起来您对继承和 OOP 很困惑。这根本不是它的工作方式。

我想简单地在子类的调用(父)类中设置一个变量。

这是不可能的,有几个原因。

首先,当你使用 时new,它会创建一个新的类实例。每个实例都是相互独立的,因为它们的属性不会绑定在一起。

此外,当您有一个子类时,它会从父类继承属性和方法。但是当您创建它的实例时,它是子类的实例 - 而不是父类。我不知道你想在那里完成什么。

parent::setVar('yoyo!');

继承的好处是您默认获取父类的方法,除非您在子类中覆盖它们。由于您不这样做,因此无需使用parent::setVar(),只需执行$this->setvar()

于 2012-04-13T17:32:14.103 回答
5

很好

$temp = new test2();

您正在创建该类的新实例。它们不再相关。

继承仅影响类层次结构的单个实例。

于 2012-04-13T17:23:57.000 回答