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

クラスで静的変数を宣言し、 を使用してそれらにアクセスできますself

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

マニュアルも確認できます。

于 2012-12-18T06:11:31.933 に答える
0

各インスタンスへの参照によって配列を渡すだけではどうですか。これは、&次のように変数名の前に使用することによって行われます。

&$SomeArray;
于 2012-12-18T10:17:36.413 に答える