设置PHP类变量

jul*_*lio 1 php oop

我正试图在PHP上使用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!'
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Nul*_*ion 6

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

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

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

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

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

parent::setVar('yoyo!');

继承的好处是你默认获得父方法,除非你在子类中覆盖它们.既然你没有这样做,就没有必要使用parent::setVar(),就这样做$this->setvar().


kon*_*ddy 5

很好

$temp = new test2();
Run Code Online (Sandbox Code Playgroud)

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

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