PHP が拡張クラスの静的メソッドを使用してメモリと変数を管理する方法を理解しようとしています。Model、User1、User2 という名前の 3 つのクラスがあります。したがって:
class Model {
static public $structure;
static public $name;
static function get_structure() {
return self::$structure = file_get_contents(self::$name.'.json');
}
}
class User1 extends Model {
}
class User2 extends Model {
}
User1::$name = 'User1';
User2::$name = 'User2';
echo User1::get_structure();
echo User2::get_structure();
User1::get_structure(); を実行すると 何らかの理由で、それに応じて結果が入力されず、User2 の値 (最後に宣言された $name 値) を取得しているようです。
User2 を宣言して Model を拡張すると、$name プロパティに対して完全に別のスコープが作成されるという前提で動作しています。したがって、User1 と User2 は、Model と同じ構造を持つ別のクラスとして宣言されます。次に、それらの値を別々のスコープで静的に定義できます。
しかし、私は今それを疑問視しています。同じ $name 変数を拡張して呼び出すと、両方とも Model クラスを指し示しますか? それとも、new User1(); で各クラスを宣言するときに、個別のスコープを作成するだけですか? と new User2();?
ありがとう。