2012-11-05 104 views
0

return 'Static hello ' . self::static_user . '...<br />'; 產地:Fatal error: Undefined class constant 'static_user' in ....訪問抽象類的靜態變量在子類

注:邏輯可能是愚蠢的,但我只是玩機智的時刻。問題是我如何訪問子類中的抽象類的靜態變量?我可以在子類中使用$this->public_user公開$public_user

abstract class UserAbstract 
{ 
protected $public_user = null; 
    static protected $static_user = null; 

    public function __construct($name) 
    { 
    $this->public_user = $name; 
     self::$static_user = $name; 
    } 

    abstract static function static_hello(); 
} 

class User extends UserAbstract 
{ 
    static function static_hello() 
    { 
     return 'Static hello ' . self::static_user . '...<br />'; 
    } 
} 

$obj_user = new User('Voodoo'); 
echo $obj_user->static_hello(); 

回答

2

使用此:

return 'Static hello ' . parent::$static_user . '...<br />'; 
+0

我不能相信我自己。我怎麼想那個.....總是有點小事。我真的知道我必須使用$標記,但有時會發生,我可以說什麼..謝謝 – BentCoder

+0

我想使用User :: static_hello();但不打印任何東西。甚至沒有錯誤。 – BentCoder

+0

@MadMax:當這個函數只返回值時,爲什麼會打印任何東西? –