[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 メーリングリストの案内