【问题标题】:PHP: Shared variables in classes / instancesPHP:类/实例中的共享变量
【发布时间】:2021-06-17 08:57:25
【问题描述】:

我有一个核心类,它由其他两个类(Ctrl 和 Main)扩展。 我想从 Main 中调用 Ctrl。 Ctrl 应该设置一个变量,然后可以在 Main 中使用。

下面的代码演示了结构。你也可以在这里测试:https://www.tehplayground.com/7Xae6rEv7WakfQIe

预期的输出是 123,但它是 0

class Core {
    public $myvar = 0;
}

class Ctrl extends Core {
    public function setMyVar($val) {
        $this->myvar = $val;
    }
}

class Main extends Core {
    public function do() {
        $ctrl = new Ctrl;
        $ctrl->setMyVar(123);
        var_dump($this->myvar);
    }
}

$main = new Main;
$main->do();

要求:Ctrl 的初始化应该在 Main 类内部进行。

【问题讨论】:

    标签: php oop


    【解决方案1】:

    您创建了一个全新的Ctrl 实例?
    变量不会在实例之间共享,除非您使用 static

    <?php
    
    class Core {
        public static $myvar = 0;
    }
    
    class Ctrl extends Core {
        public function setMyVar($val) {
            self::$myvar = $val;
        }
    }
    
    class Main extends Core {
        public function do() {
            $ctrl = new Ctrl;
            $ctrl->setMyVar(123);
            var_dump(self::$myvar);
        }
    }
    
    $main = new Main;
    $main->do();
    

    demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多