2013-02-23 71 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();