2009-10-16 54 views
0

为什么我不能这样做?php5扩展主类并使用静态

<?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

通过你的代码的外观,因为你没有分配任何东西到$ db。构造函数仅在创建类的实例时调用,而不是静态的。

此外,为什么你的代码甚至延长核心?您不需要将其扩展为使用静态方法/变量。也许将它变成一个实例属性会更有意义,并且使用新的实例而不是静态的?

0

核心:: __当你调用new corenew stat结构()方法只调用,调用对象的创建。你直接去stat::log(),所以core :: $ db从来没有被初始化过。