试图访问其他类中的一个类的数据
问题描述:
尝试从一个方法中获取一些数据在侧静态方法(使用它在一个其他类中),但我得到'使用$ 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...
答
不能使用$此,当您使用静态变量的工作。 $这是一个指向当前对象的指针,但静态变量属于类。
+0
没办法解决这个问题? – user759235
+0
@ user759235 nope – jcobhams
答
类方法(或静态函数)不绑定到您的类的特定实例,即它没有$this
,尽管self
可用。
类方法可以访问静态属性或方法,但访问类中的任何其他内容都会引发错误。最好将静态方法看作组织函数的一种手段;因此,它们在外部函数和实例方法之间运行。
在你的情况,你必须你的静态方法内部创建一个实例:
public static function showFunc()
{
$o = new self;
$show = $o->passFunc();
return $show;
}
'$ MyClass的=新mClass;'? http://www.php.net/manual/en/keyword.class.php –