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

Php 为什么我的公共静态数组没有定义?,php,object,Php,Object,我有一个简单的课程: class Test { public static $myArray = array('a', 'b'); } $test = new Test(); var_dump($test->myArray()); 空的 我希望数组'a','b'作为输出,但是我得到了null。为什么?您是作为methodfunction访问它的? 要接收其值,必须将其作为静态变量调用 var_dump($test::myArray); 应该工作像这样访问它 <?php

我有一个简单的课程:

class Test
{
    public static $myArray = array('a', 'b');
}

$test = new Test();
var_dump($test->myArray());
空的


我希望数组'a','b'作为输出,但是我得到了null。为什么?

您是作为methodfunction访问它的? 要接收其值,必须将其作为静态变量调用

var_dump($test::myArray); 
应该工作

像这样访问它

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

$test = new Test();
var_dump($test::$myArray);
?>

请参见此处

所做的静态不是一个函数

还可以使用::而不是->调用静态。。所以你应该:

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

$test = new Test();
var_dump($test::$myArray); 

为什么要调用类似数组的动态方法? 召唤

这个类没有构造函数,所以做一个新的测试没有意义;您可以使用类名直接访问静态类


$test->myArray是访问类实例的公共非静态属性的方法。要访问类的静态属性,您需要编写::$您甚至不需要从类测试实例化对象;您甚至不需要从类测试中实例化对象;该类没有构造函数,因为它是一个愚蠢的测试类。真正的类显然有它的构造函数。@LorenzMeyer下次你应该在问题中指定它。
Test::$myArray
<?php

class Test{

public static $myArray = array('a', 'b');

}

var_dump(Test::$myArray);

?>