试图访问其他类中的一个类的数据

问题描述:

尝试从一个方法中获取一些数据在侧静态方法(使用它在一个其他类中),但我得到'使用$ this当不在对象上下文.. '错误。试图访问其他类中的一个类的数据

下面一个基本的例子

class mClass{ 

    public $someVar = 'Hello world...'; 

    public function passFunc(){ 
     $give = $this->someVar; 
     return $give; 
    } 

    public static function showFunc(){ 
     $show = self::passFunc(); 
     return $show; 
    } 
} 

mClass::showFunc();// show error: Using $this when not in object context in... 
+1

'$ MyClass的=新mClass;'? http://www.php.net/manual/en/keyword.class.php –

不能使用$此,当您使用静态变量的工作。 $这是一个指向当前对象的指针,但静态变量属于类。

+0

没办法解决这个问题? – user759235

+0

@ user759235 nope – jcobhams

类方法(或静态函数)不绑定到您的类的特定实例,即它没有$this,尽管self可用。

类方法可以访问静态属性或方法,但访问类中的任何其他内容都会引发错误。最好将静态方法看作组织函数的一种手段;因此,它们在外部函数和实例方法之间运行。

在你的情况,你必须你的静态方法内部创建一个实例:

public static function showFunc() 
{ 
    $o = new self; 
    $show = $o->passFunc(); 

    return $show; 
}