PHP静态数组解决方法

时间:2012-12-18 06:04:55

标签: php arrays class static

我有一个数组结构,其键和值对是多维深度。我想在一个类中使用这个数组,但我不想将它添加到每个实例中,因为它只是该类所需的引用。

这是我通过Google和Stack Overflow搜索提出的解决方法。它适用于我需要的东西,但有没有明显的问题,更有经验的PHP程序员可以看到它?

class Foo {

    public static function bar($key = null) {

        $array = array('key'=>array(1,2,3));

        if ($key && array_key_exists($key, $array)) {
            return $array[$key];
        } else {
            return $array;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

静态变量不是为此目的而设。如果您想拥有每个实例的值,只需在OOP上下文中使用它:

class Foo {

    protected $myArray = array();

    public function __construct($array = array())
    {
        $this->myArray = $array;
    }

}

$array1 = array('key' => array(1,2,3));
$array2 = array('key' => array(4,5,6));

$foo1 = new Foo($array1);
$foo2 = new Foo($array2);

答案 1 :(得分:0)

您可以在类中声明静态变量,然后使用self访问它们。

class Foo {
  public static $bar = array(...);
  function Foo()
  {
    print_r(self::$bar)
  }
}   
print_r(Foo::$bar); 

您还可以查看the manual

答案 2 :(得分:0)

为什么不通过引用传递每个实例来传递数组。这是通过在变量名之前使用&来完成的,如下所示:

&$SomeArray;