2011年4月23日

[PHP-users 35557] Re:初期化した配列のキーについて質問させてください

> $hooksが空だと思ったのは、コンストラクタ内でself::$_hooks = array();とし
> ていて、それを関数内で$hooks = self::$_hooksとしていたので、結局$hooks =
> array();
> だと思いまして。
〜 略 〜
> $_hooksを最初にprivate static
> $_hooksで定義し、その後でコンストラクタ内でHook_Registry
> の$_hooksを初期化していると思ったのですが、違うのでしょうか?


Hook_Registry のコンストラクタ内で $_hooks を空にしているのは確かですが、
★Aの時にコンストラクタが必ず呼ばれるわけではありません。
getInstance の実装をよく見てください。すでにインスタンスが作成されているときは、
作成済みのインスタンスを返しているだけです。これは singleton パターンです。
つまり★A以外の場所で getInstance が呼ばれた場合、その場所以外では Hook_Registry の
コンストラクタは呼ばれません。

Hook_Registry には regsiter というメソッドが定義されているようです。
★Aが実行される前に、どこかで register が呼ばれて $_hooks に値がセットされているのでは?
★Bはその register でセットした値をがあるかないかを判断しているわけです。
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2011年4月23日 12:57
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103412
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。