我试图从另一个类访问变量的内容。我有下面的代码,我希望得到'测试'回来了,我一无所获。
我认为这是因为它将$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';
但变量的数量必须在函数中。
我已经阅读了其他一些相关的答案,似乎无法使其发挥作用。
答案 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();