访问php对象值

时间:2013-09-28 16:48:35

标签: php

我有这个对象,我可以通过$ object->名称访问该名称,但无法获取星号和结束。我尝试$object->starline它返回null。

  

PHPParser_Node_Expr_Variable Object([subNodes:protected] => Array(   [name] => var)[attributes:protected] =>数组([startLine] => 2   [endLine] => 2))

1 个答案:

答案 0 :(得分:0)

你得到$ object-> name,因为类PHPParser_NodeAbstract有魔术方法__get()。

PHPParser_Node_Expr_Variable扩展了扩展PHPParser_NodeAbstract的PHPParser_Node_Expr。因此,PHPParser_Node_Expr_Variable对象具有这些类具有的所有方法(Object inheritance)。

abstract class PHPParser_NodeAbstract implements ...
{
    ....

    public function &__get($name) {
        return $this->subNodes[$name];
    }

    ...

    public function &getAttribute($key, $default = null) {
        if (!array_key_exists($key, $this->attributes)) {
            return $default;
        } else {
            return $this->attributes[$key];
        }
    }
}

并且你没有得到$ object-> starline,因为数组子节点中没有这样的属性“starline”。 但是如果你看一下方法getAttribute(),你就会明白这个代码必须工作。

$object->getAttribute('startLine');