PHP属性存在于类中

时间:2013-02-21 20:39:27

标签: php properties static-members

嘿伙计我有一个奇怪的问题$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)

这里发生了什么?

2 个答案:

答案 0 :(得分:2)

$this仅存在于对象上下文中。由于您的类方法是static,因此您没有对象。因此没有$this。使您的方法不是静态的并实例化一个对象。

另见How Not To Kill Your Testability Using Statics

答案 1 :(得分:1)

静态方法存在于$ this范围之外的几乎所有OO语言中,这就是为什么可以在不必初始化类的实例的情况下调用它们。您要么必须传递它,要么将其作为静态变量存储在其他地方以便能够引用它。