设置PHP类变量

时间:2012-04-13 17:21:27

标签: php oop

我正在尝试使用OOP来处理OOP,而且我对一些类继承的东西感到有些困惑。

这里有几个简单的类我正在尝试学习它们的工作方式。我想简单地在子类中调用(父)类中的变量。从我看过的例子来看,它似乎应该可行,但是子类无法设置父变量:

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!'

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

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

  

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

由于以下几个原因,这是不可能的。

首先,当您使用new时,它会创建该类的新实例。每个实例彼此独立,因为它们的属性不会捆绑在一起。

当你有一个子类时,继承了父类的属性和方法。但是当你创建它的一个实例时,它是子类的一个实例 - 而不是父类。我不是你想要在那里完成的。

  

parent::setVar('yoyo!');

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

答案 1 :(得分:5)

好吧,

$temp = new test2();

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

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