【问题标题】:Echo variable which has been set in another classes function已在另一个类函数中设置的回声变量
【发布时间】:2017-09-10 16:38:38
【问题描述】:

我正在尝试从另一个类访问变量的内容。我有下面的代码,我希望返回“测试”,但我什么也没得到。

我认为这是因为 $abc_rank 为空。需要在函数本身中填充变量。

因此,我怎样才能让$abc_rank 保持该回显并通过其他类输出?

<?php

class class1 {

    public static $abc_rank;

    public function __construct() {
        $this->add_text();
    }

    public function add_text() {
        $this->abc_rank = 'test';
    }

}

class class2 {

    public function __construct() {
        $this->display();
    }

    public function display() {
        $test = class1::$abc_rank;
        echo $test; 
    }

}

$go = new class2();

?>

我知道我能做到:

public static $abc_rank = 'test';

但变量的总体必须在函数中。

我已经阅读了一些其他相关的答案,但似乎无法让它发挥作用。

【问题讨论】:

    标签: php class oop variables


    【解决方案1】:

    你必须创建 class1 来运行这个类的构造函数。

    class class1 {
    
        public static $abc_rank;
    
        public function __construct() {
            $this->add_text();
        }
    
        public function add_text() {
            self::$abc_rank = 'test';
        }
    
    }
    
    class class2 {
    
        public function __construct() {
            $this->display();
        }
    
        public function display() {
            $test = class1::$abc_rank;
            echo $test; 
        }
    
    }
    new class1(); 
    $go = new class2();  
    

    【讨论】:

      【解决方案2】:

      class1 中:

      $this-&gt;abc_rank = 'test'; 替换为$this::$abc_rank='test';

      ($abc_rank 是静态属性)

      class2 中:

      在你的显示功能中:替换

      $test = class1::$abc_rank;
      echo $test; 
      

      $test = new class1();
      echo $test::$abc_rank;
      

      (class1 不是静态的)

      完整代码在这里:

      class class1 {
      
          public static $abc_rank;
      
          public function __construct() {
              $this->add_text();
          }
      
          public function add_text() {
              //$this->abc_rank = 'test';
              $this::$abc_rank='test';
          }
      
      }
      
      class class2 {
      
          public function __construct() {
              $this->display();
          }
      
          public function display() {
              //$test = class1::$abc_rank;
              //echo $test; 
              $test = new class1();
              echo $test::$abc_rank;
          }
      
      }
      
      $go = new class2();
      

      【讨论】:

        猜你喜欢
        • 2019-01-12
        • 2022-01-14
        • 2017-02-14
        • 1970-01-01
        • 2023-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多