为什么我不能这样做?
<?php
class core {
public static $db;
function __construct() {
$this->db = new mysql('host', 'user', 'pw', 'db');
}
}
class stat extends core {
public static function log() {
core::$db->query("insert into mytable values(now())");
}
}
// do something
stat::log();
?>
答案 0 :(得分:0)
通过代码的外观,因为您没有为$ db分配任何内容。只有在创建类的实例时才会调用构造函数,而不是使用静态。
另外,为什么你的代码甚至扩展了核心?您不需要将其扩展为使用静态方法/变量。也许将它真正变成实例属性更有意义,并使用新实例而不是静态?
答案 1 :(得分:0)
只有在调用new core
或new stat
时调用core :: __ construct()方法,才能调用对象的创建。你直接进入stat::log(),
所以core :: $ db从未被初始化。