2009-10-16 51 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從來沒有被初始化過。