示例#1
0
 /**
  * {@inheritDoc}
  */
 protected function extractByReference($object)
 {
     $fieldNames = array_merge($this->metadata->getFieldNames(), $this->metadata->getAssociationNames());
     $refl = $this->metadata->getReflectionClass();
     $filter = $object instanceof FilterProviderInterface ? $object->getFilter() : $this->filterComposite;
     $data = parent::extractByReference($object);
     foreach ($fieldNames as $fieldName) {
         if ($filter && !$filter->filter($fieldName) || false === strpos($fieldName, '.')) {
             continue;
         }
         list($fieldName) = explode('.', $fieldName, 2);
         $reflProperty = $refl->getProperty($fieldName);
         $reflProperty->setAccessible(true);
         $dataFieldName = $this->computeExtractFieldName($fieldName);
         $data[$dataFieldName] = $this->extractValue($fieldName, $reflProperty->getValue($object), $object);
     }
     return $data;
 }