嘿伙计我有一个奇怪的问题$this
没有传递给我的代码,我希望
有人可以帮助我,结构如下:
Class
{
protected _foo = '';
.........
self::_setSessionsToProperties('_foo', array('access_token','instance_url'));
..........
protected static function _setSessionsToProperties($property, $setter)
{
self::_validateApprovedSessions($setter);
if (isset($this->$property) || property_exists($this, $property))
{
foreach ($setter as $set) { $this->$property->$set; }
}
return $this;
}
Undefined variable: this
为了实现这一点,我必须传递 $this
作为参数字符串,
似乎非常反直觉?
self::_setSessionsToProperties($this, '_foo', array('access_token','instance_url'));
..........
protected static function _setSessionsToProperties($this, $property, $setter)
这里发生了什么?
答案 0 :(得分:2)
$this
仅存在于对象上下文中。由于您的类方法是static
,因此您没有对象。因此没有$this
。使您的方法不是静态的并实例化一个对象。
答案 1 :(得分:1)
静态方法存在于$ this范围之外的几乎所有OO语言中,这就是为什么可以在不必初始化类的实例的情况下调用它们。您要么必须传递它,要么将其作为静态变量存储在其他地方以便能够引用它。