我有一个数组结构,其键和值对是多维深度。我想在一个类中使用这个数组,但我不想将它添加到每个实例中,因为它只是该类所需的引用。
这是我通过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;
}
}
}
答案 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;