示例#1
0
 /**
  * {@inheritDoc}
  */
 protected function extractByValue($object)
 {
     $methods = get_class_methods($object);
     $filter = $object instanceof FilterProviderInterface ? $object->getFilter() : $this->filterComposite;
     $data = parent::extractByValue($object);
     $fieldNames = $this->metadata->getFieldNames();
     foreach ($fieldNames as $fieldName) {
         if ($filter && !$filter->filter($fieldName) || false === strpos($fieldName, '.')) {
             continue;
         }
         list($fieldName) = explode('.', $fieldName, 2);
         $getter = 'get' . ucfirst($fieldName);
         if (in_array($getter, $methods)) {
             $dataFieldName = $this->computeExtractFieldName($fieldName);
             $data[$dataFieldName] = $this->extractValue($fieldName, $object->{$getter}(), $object);
         }
     }
     return $data;
 }