2

ここで構文上の勝利を探しています...後で取得できるようにメッセージをシングルトンクラスに追加できるようにしたいと思います。

現在、次のようになっています。

class messenger
{
    static $messages;

    public function addMessage( $message ) {
        self::messages[] = $message;
    }

    public function showMessages() {
        foreach ( self::messages as $message ) {
            echo "<p>$message</p>";
        }
    }

}

今、私はそれを次のように使用できるようにしたいと思います:

messenger::addMessage( 'This is a potential message!' );
messenger::addMessage( 'Another potential message!' );
messenger::showMessages();

これを出力します([p] == html段落タグ):

[p]This is a potential message![/p]
[p]Anotherpotential message![/p]

私はそのコンセプトに基づいていませんか?使用されているさまざまなクラスの変数に再度関連付ける必要はありませんが、ハングアップが「それを行う方法」なのか、それとも単に不可能なのかはわかりません。

コンセプトは、グローバル化する必要がなく、後で取得できるエラーメッセージ(配列など)をこれに追加できるようにすることです。

編集:これを行っているのは、フレームワークを通じて、グローバルを使用したりクラスを再インスタンス化したりせずに、後でエラーを表示したい他のクラスからこのクラスにメッセージを追加できるようにするためです。

ご協力いただきありがとうございます!

4

2 に答える 2

0

その状態を外部から隠す方がよいので、次のようにします。

static $messages;

する必要があります:

private static $messages = array();

また、初期化に注意して、メッセージを追加する前に配列であることを確認してください。

さらに、使用しているメソッドはとして宣言する必要があります。staticそうしないと、PHPはこれについて文句を言います(E_STRICT警告をトリガーします)。

public static function yourFunction() { }
于 2012-05-29T01:48:38.050 に答える
0

私はあなたが何を求めているのか完全にはわかりません。はい、あなたが提案していることはうまくいくでしょう。しかし、気づいていない場合は、構文が少しずれています。

public static function addMessage( $message ) { ... }
public static function showMessages() { ... }
于 2012-05-29T01:36:53.633 に答える