【发布时间】:2015-08-17 15:01:02
【问题描述】:
我有这个特质类:
trait Example
{
protected $var;
private static function printSomething()
{
print $var;
}
private static function doSomething()
{
// do something with $var
}
}
还有这个类:
class NormalClass
{
use Example;
public function otherFunction()
{
$this->setVar($string);
}
public function setVar($string)
{
$this->var = $string;
}
}
但是我收到了这个错误:
Fatal error: Using $this when not in object context.
我该如何解决这个问题?我不能在特征类上使用属性?或者这真的不是一个好习惯?
【问题讨论】:
-
你在哪里/如何调用 setvar()?要获得该错误,您必须执行
$foo = NormalClass::setVar()之类的操作。对于您的 printSomething,$var将是一个未定义的局部变量。 -
@MarcB 我已经更新了我的问题。
-
这没有帮助,现在它变成了“你如何/在哪里调用 otherFunction()”?您需要显示整个调用链。
-
您可能是指
print static::$var;,因为该方法是静态。实例变量不会帮到你。 -
您将实例变量(属于类实例的一部分)与类变量(静态的,属于类本身的一部分)混合在一起,
$this->var VS. self::$var