2013-02-23 84 views
0

這是一個來自php的程序。我無法從靜態函數中打印受保護變量的值。這個程序有什麼問題?從php中的靜態函數訪問變量

class SomeClass 
{ 
    protected $_someMember; 

    public function __construct() 
    { 
     $this->_someMember = 1; 
     self::getSomethingStatic(); 
    } 

    public static function getSomethingStatic() 
    { 
     echo $_someMember * 5; 
    } 
} 
$obj = new SomeClass(); 
+3

你不能從靜態函數訪問實例變量 – 2013-02-23 11:06:50

+3

'static' ==沒有對象實例。沒有例子,沒有'$ this'。沒有對象,沒有'$ this',沒有**實例變量**。 – deceze 2013-02-23 11:07:43

+0

所以你有10個不同的對象。你期望看到哪一個'$ _someMember'?還有一點 - 你根本沒有任何物體 - 在這種情況下是什麼? – zerkms 2013-02-23 11:08:52

回答

2

你不妨看一下static的PHP文檔。正如你應該注意的那樣,靜態函數不能訪問對象屬性。實際上,如果您正在嘗試學習PHP的OOP實現的缺陷&,那麼您可能需要查看here

+0

正確的需要通過一些文檔。 – codename 2013-02-23 12:52:52

3

你希望做這樣的事情

class SomeClass 
{ 
    protected static $_someMember = <default value>; 

    public function __construct() 
    { 
     self::getSomethingStatic(); 
    } 

    public static function getSomethingStatic() 
    { 
     echo static::$_someMember * 5; 
    } 
} 
$obj = new SomeClass();