已在另一个类函数中设置的Echo变量

时间:2017-04-14 12:05:55

标签: php class oop variables

我试图从另一个类访问变量的内容。我有下面的代码,我希望得到'测试'回来了,我一无所获。

我认为这是因为它将$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';

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

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

2 个答案:

答案 0 :(得分: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();  

答案 1 :(得分:1)

class1

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

($ abc_rank是静态属性)

class2

在您的显示功能中:替换

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

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

(class1 isn&#t; t static)

完整代码:

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();