0

配列属性を実装するクラスがあります。その属性にいくつかのオブジェクトを設定したいと思います。リクエスト フロー中に何度も実行されるため、静的として宣言されます。そして、それはシングルトンクラスではありません。

このクラスの属性は、2 回目に何かを追加するときに以前の値を保持しますか? (これが何かを変更する場合、追加は静的メソッドを介して行われます)

例:

/* file1.php */
Foo::add('value1');
include 'file2.php';

/* file2.php */
...
Foo::add('value2');

これは の定義ですFoo:

class Foo {
   public static $bar = [];
   public static function add($value)
   {
      Foo::$bar[] = $value;
   }
}

これは良い習慣ですか?ここではシングルトンの方が良いですか?これに対処する他の方法はありますか?

4

1 に答える 1

0

はい。include()andrequire()ステートメントは、基本的に、参照ファイルの内容をステートメントの場所にダンプします。すべてを 1 つのスクリプトと考えることができます。

var_dump(Foo::bar);スクリプトの最後に追加することで、質問を自分でテストできます。

シングルトン パターンを使用する必要があるのは、クラスを一度だけインスタンス化/初期化する必要がある場合のみです。スクリプト内に追加のインスタンスが必要になった場合は、それを通常のクラスのままにして、必要なことを行う方法を考え始めます。すなわち:参照渡し

于 2012-11-23T16:14:04.797 に答える