PHP OOP-我正在尝试输出一个已加载到不同类中的数组
class_1.phpPHP 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 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');
}
}