【PHP】下らねぇ質問はここに書き込みやがれ 47
■ このスレッドは過去ログ倉庫に格納されています
0176nobodyさん
2007/06/12(火) 11:45:43ID:PUVkyguwstaticで宣言されたメソッド、プロパティなどは、オブジェクトではなくクラスの持ち物と書いてあります。
Circleクラスを定義します。その中に public static $color; というプロパティ宣言と
public static functions setColor($color); public function getColor(); public __get($prop)というメソッドを定義します
そして オブジェクト生成で$redCircle = new Circle();とします。
そうすると$redCircle->getColor()とするとプロパティは存在しない(static宣言されているのでオブジェクトの持ち物ではないから)
とちゃんとなるんですが、static宣言したメソッドsetColorは使用できてしまいます。
$redCircle->setColor($color);とすると$colorプロパティに値が設定されてしまいます。
ちなみに __call($func, $param)メソッドを定義してみてもエラーメッセージは表示されませんでした。
なぜ、static宣言された、プロパティの場合だとオブジェクトの持ち物ではないことになり(プロパティを使用できない)、
メソッドの場合だとオブジェクトの持ち物になってしまう(メソッドをしようできる)ことになってしまうのでしょうか?
冒頭にも書きましたが、static宣言されたプロパティ・メソッドはクラスの持ち物だと書かれています。
static 宣言されたメソッドがオブジェクトから使用できるのが納得できませんし、ましてや$colorプロパティをその中で
使っています。全然、理解できません。。お願いします。
■ このスレッドは過去ログ倉庫に格納されています