设置 PHP 类变量


setting PHP class variables

我正在尝试将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!'

感谢您的任何帮助。

看起来你对继承和OOP很困惑。这根本不是它的工作原理。

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

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

首先,当你使用 new 时,它会创建类的新实例。每个实例彼此独立,从某种意义上说,它们的属性不会绑定在一起。

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

parent::setVar('yoyo!');

继承的好处是,默认情况下会获取父类的方法,除非在子类中重写它们。既然你不这样做,就没有必要使用parent::setVar(),只要$this->setvar()

行了。

好吧,用

$temp = new test2();

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

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