2014-09-24 46 views
0

我寫了其中第二擴展的第一個兩班,當我嘗試使用它,我得到這個錯誤:致命錯誤:訪問未申報的靜態屬性:

致命錯誤:訪問未申報的靜態屬性:

代碼邏輯:

class foo 
{ 
    public static function fooFunc() 
    { 
     return self::$fooVar; 
    } 
} 

class bar extends foo 
{ 
    protected static $fooVar = 'Hello World'; 
} 

bar::fooFunc(); 

如何使它工作?

+0

在父類中聲明'$ fooVar'作爲公共靜態變量。 – Ohgodwhy 2014-09-24 19:00:22

+0

富是一個父類,它應該怎麼知道里面的酒吧? – 2014-09-24 19:02:08

回答

2

static更換self

class foo 
{ 
    public static function fooFunc() 
    { 
     return static::$fooVar; 
    } 
} 

class bar extends foo 
{ 
    protected static $fooVar = 'Hello World'; 
} 

bar::fooFunc(); 


Futhermore增加一個「默認變量」的 foo類是在您忘記在子類中定義的靜態變量是一個好主意:

class foo 
{ 
    protected static $fooVar = 'Default Text'; 

    public static function fooFunc() 
    { 
     return static::$fooVar; 
    } 
} 
相關問題