private function addProperties(Event $abs)
    {
        if ($abs['debugMethod'] === 'table' && $abs['traverseValues']) {
            return;
        }
        $obj = $abs->getSubject();
        $reflectionObject = $abs['reflector'];
        /*
            We trace our ancestory to learn where properties are inherited from
        */
        while ($reflectionObject) {
            $className = $reflectionObject->getName();
            $properties = $reflectionObject->getProperties();
            $isDebugObj = $className == __NAMESPACE__;
            while ($properties) {
                $reflectionProperty = \array_shift($properties);
                $name = $reflectionProperty->getName();
                if (isset($abs['properties'][$name])) {
                    // already have info... we're in an ancestor
                    $abs['properties'][$name]['overrides'] = $this->propOverrides(
                        $reflectionProperty,
                        $abs['properties'][$name],
                        $className
                    );
                    $abs['properties'][$name]['originallyDeclared'] = $className;
                    continue;
                }
                if ($isDebugObj && $name == 'data') {
                    $abs['properties']['data'] = \array_merge(self::$basePropInfo, array(
                        'value' => array('NOT INSPECTED'),
                        'visibility' => 'protected',
                    ));
                    continue;
                }
                $abs['properties'][$name] = $this->getPropInfo($abs, $reflectionProperty);
            }
            $reflectionObject = $reflectionObject->getParentClass();
        }
        $this->addPropertiesPhpDoc($abs);   // magic properties documented via phpDoc
        $this->addPropertiesDebug($abs);    // use __debugInfo() values if useDebugInfo' && method exists
        $properties = $abs['properties'];
        $abs['hist'][] = $obj;
        foreach ($properties as $name => $info) {
            if ($this->abstracter->needsAbstraction($info['value'])) {
                $properties[$name]['value'] = $this->abstracter->getAbstraction($info['value'], $abs['debugMethod'], $abs['hist']);
            }
        }
        $abs['properties'] = $properties;
        return;
    }
private function addProperties(Event $abs)
    {
        if ($abs['debugMethod'] === 'table' && $abs['traverseValues']) {
            return;
        }
        $obj = $abs->getSubject();
        $reflectionObject = $abs['reflector'];
        /*
            We trace our ancestory to learn where properties are inherited from
        */
        while ($reflectionObject) {
            $className = $reflectionObject->getName();
            $properties = $reflectionObject->getProperties();
            $isDebugObj = $className == __NAMESPACE__;
            while ($properties) {
                $reflectionProperty = \array_shift($properties);
                $name = $reflectionProperty->getName();
                if (isset($abs['properties'][$name])) {
                    // already have info... we're in an ancestor
                    $abs['properties'][$name]['overrides'] = $this->propOverrides(
                        $reflectionProperty,
                        $abs['properties'][$name],
                        $className
                    );
                    $abs['properties'][$name]['originallyDeclared'] = $className;
                    continue;
                }
                if ($isDebugObj && $name == 'data') {
                    $abs['properties']['data'] = \array_merge(self::$basePropInfo, array(
                        'value' => array('NOT INSPECTED'),
                        'visibility' => 'protected',
                    ));
                    continue;
                }
                $abs['properties'][$name] = $this->getPropInfo($abs, $reflectionProperty);
            }
            $reflectionObject = $reflectionObject->getParentClass();
        }
        $this->addPropertiesPhpDoc($abs);   // magic properties documented via phpDoc
        $this->addPropertiesDebug($abs);    // use __debugInfo() values if useDebugInfo' && method exists
        $properties = $abs['properties'];
        $abs['hist'][] = $obj;
        foreach ($properties as $name => $info) {
            if ($this->abstracter->needsAbstraction($info['value'])) {
                $properties[$name]['value'] = $this->abstracter->getAbstraction($info['value'], $abs['debugMethod'], $abs['hist']);
            }
        }
        $abs['properties'] = $properties;
        return;
    }
private function addProperties ( Event $ abs ) { if ( $ abs [ 'debugMethod' ] === 'table' && $ abs [ 'traverseValues' ] ) { return ; } $ obj = $ abs -> getSubject ( ) ; $ reflectionObject = $ abs [ 'reflector' ] ; /*
            We trace our ancestory to learn where properties are inherited from
        */ while ( $ reflectionObject ) { $ className = $ reflectionObject -> getName ( ) ; $ properties = $ reflectionObject -> getProperties ( ) ; $ isDebugObj = $ className == __NAMESPACE__ ; while ( $ properties ) { $ reflectionProperty = \ array_shift ( $ properties ) ; $ name = $ reflectionProperty -> getName ( ) ; if ( isset ( $ abs [ 'properties' ] [ $ name ] ) ) { // already have info... we're in an ancestor $ abs [ 'properties' ] [ $ name ] [ 'overrides' ] = $ this -> propOverrides ( $ reflectionProperty , $ abs [ 'properties' ] [ $ name ] , $ className ) ; $ abs [ 'properties' ] [ $ name ] [ 'originallyDeclared' ] = $ className ; continue ; } if ( $ isDebugObj && $ name == 'data' ) { $ abs [ 'properties' ] [ 'data' ] = \ array_merge ( self :: $ basePropInfo , array ( 'value' => array ( 'NOT INSPECTED' ) , 'visibility' => 'protected' , ) ) ; continue ; } $ abs [ 'properties' ] [ $ name ] = $ this -> getPropInfo ( $ abs , $ reflectionProperty ) ; } $ reflectionObject = $ reflectionObject -> getParentClass ( ) ; } $ this -> addPropertiesPhpDoc ( $ abs ) ; // magic properties documented via phpDoc $ this -> addPropertiesDebug ( $ abs ) ; // use __debugInfo() values if useDebugInfo' && method exists $ properties = $ abs [ 'properties' ] ; $ abs [ 'hist' ] [ ] = $ obj ; foreach ( $ properties as $ name => $ info ) { if ( $ this -> abstracter -> needsAbstraction ( $ info [ 'value' ] ) ) { $ properties [ $ name ] [ 'value' ] = $ this -> abstracter -> getAbstraction ( $ info [ 'value' ] , $ abs [ 'debugMethod' ] , $ abs [ 'hist' ] ) ; } } $ abs [ 'properties' ] = $ properties ; return ; }
Adds properties to abstraction

@param Event $abs Abstraction event object

@return void
Adds properties to abstraction