PHP OOP-我正在尝试输出一个已加载到不同类中的数组

PHP OOP-我正在尝试输出一个已加载到不同类中的数组,php,Php,class_1.php class class_1 { public function __construct() { require_once $_SERVER['DOCUMENT_ROOT'].'/array.php'; } } class_2.php class class_2 { static function output_array() { return $array_NUMBERS; } } arr

class_1.php

class class_1
{
    public function __construct()
    {
        require_once $_SERVER['DOCUMENT_ROOT'].'/array.php';
    }
}
class_2.php

class class_2
{
    static function output_array()
    {
        return $array_NUMBERS;
    }
}
array.php

$array_NUMBERS = array('1', '2', '3');
page.php

require_once $_SERVER['DOCUMENT_ROOT'].'/class_1.php';

require_once $_SERVER['DOCUMENT_ROOT'].'/class_2.php';

$obj = new class_1();

$numbers = class_2::output_array();

echo '<pre>';
print_r($numbers);
require_once$\u SERVER['DOCUMENT_ROOT']./class_1.php';
需要_once$_服务器['DOCUMENT_ROOT']./class_2.php';
$obj=新类_1();
$numbers=class_2::output_array();
回声';
打印(数字);
我做错了什么?你不应该在课堂上使用“require_once”吗


问题:它没有输出数组值。

您正在
类1::\u construct()
中创建一个局部变量,该变量立即超出范围,并且永远丢失

即使不是,函数中声明的变量也是该函数的局部变量,不能从其他函数访问
class_2::output_array()
没有变量
$array\u NUMBERS
的概念。你需要仔细阅读

要使其工作,您必须使变量成为
类1的公共成员:

$this->array_NUMBERS = array(...);
array.php:

class class_1
{
    public function __construct()
    {
        $array_NUMBERS = array('1', '2', '3');
    }
}

可以这样想:
include()
和co.用于在某个地方引入代码,本质上,在
class_1.php
中发生的事情是,您最终得到的结果相当于:

class class_1
{
    public function __construct()
    {
        $array_NUMBERS = array('1', '2', '3');
    }
}

因此,
$array\u NUMBERS
是构造函数中的一个局部变量,这就是为什么
class\u 2
看不到它的原因。

使用
require\u后,代码变成:

因此,您要做的是在函数中指定一个变量。因此,该变量的作用域仅在该函数内

将变量添加到其他类/函数中的方法有很多,但整个方法似乎都是错误的(另请参见@mikelewis的答案)


解决方法是在
class\u 1
中定义一个变量,将数组分配给该变量,并将该类的实例作为参数传递给
output\u array
函数。

什么是问题/问题/错误?请编辑帖子以包含错误消息(如果有),或者您的程序的功能与您的期望不同。我们不是读心术的人,它不会输出数组值。只是一张空白页。
class class_1
{
    public function __construct()
    {
        $array_NUMBERS = array('1', '2', '3');
    }
}