/** * {@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; }