0

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

这是我通过 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;
        }
    }
}
4

3 回答 3

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);
于 2012-12-18T09:33:12.827 回答
0

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

&$SomeArray;
于 2012-12-18T10:17:36.413 回答
0

您可以在类中声明静态变量,然后使用self.

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

您也可以查看手册

于 2012-12-18T06:11:31.933 回答