[PHP-users 32454] Re: 継承クラス内のstaticメンバについて

Yutaro Mitsui yutaro @ flight-city.com
2007年 7月 17日 (火) 12:17:22 JST


三井です。


>> 継承クラス内のstaticメンバについて質問です。
>>
>> あるクラスを継承したクラスが2つあるとします。
>> 基底クラスで、staticなメンバを定義しています。
>> 片方の継承したクラスで、そのstaticなメンバの値を
>> 変更すると、もう片方の継承したクラスの値も変更されます。
>>
>> これは、仕様でしょうか?
> 
> 仕様というか、staticしているんだから、当たり前でしょ!
> static宣言は一般に静的と訳されていますが、というより唯一という意味が近いですよ。
> 他のC的な言語はすべて同じ意味です。
> 逆にあなたが期待したいことをしたいならば、static宣言をはずせばいいんです。
返信ありがとうございます。
当たり前のことを聞いて、申し訳ございません。
継承クラス同士(例で言う、Test1とTest2)は、
つながりのないものと思っていました。
継承元クラスで定義したstaticなメンバ変数は、
継承した先で共通であることは、常識のようですね。
大変、失礼しました。

値をロードするメソッド内で、static変数を定義し、
その値を利用して、メンバ変数を変更するようにします。


class Test {
	$value;
	function loadValue()
	{
		static $value;
		$this->value =& $value;
		if ($value) {
			return true;
		}
		// 値の取得処理
		return true;
	}
}


PHP-users メーリングリストの案内