【发布时间】:2012-07-14 17:23:28
【问题描述】:
我试图了解 PHP 如何在扩展类中使用静态方法管理内存和变量。我有三个类,一个名为 Model、User1、User2。因此:
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();?
谢谢。
【问题讨论】:
-
如果你使用的是静态类,那就不是 OOP。我正在删除标签。此外,模型是 layer,而不是类。
标签: php inheritance static