为什么我的公共静态数组没有定义


Why is my public static array not defined?

我有一个简单的类:

class Test
{
    public static $myArray = array('a', 'b');
}
$test = new Test();
var_dump($test->myArray());

null

我希望array('a', 'b')作为输出,但我得到的是空。为什么?

像这样访问它

<?php
class Test
{
    public static $myArray = array('a', 'b');
}
$test = new Test();
var_dump($test::$myArray);
?>

看这里 PHP - 静态

你所做的静态不是一个函数。

此外,静态也用::而不是->调用,所以你应该这样做:

<?php
class Test
{
    public static $myArray = array('a', 'b');
}
$test = new Test();
var_dump($test::$myArray); 

这个类没有构造函数,所以做一个new Test();你可以直接使用类名访问静态类是没有意义的

<?php
class Test{
public static $myArray = array('a', 'b');
}
var_dump(Test::$myArray);
?>

为什么像动态方法一样调用数组?叫

Test::$myArray

您正在将其作为方法(函数)访问?
要接收其值,您必须将其称为静态变量

var_dump($test::myArray); 

应该工作