/** * @param string $entityClass * @param array $config * * @return string[] */ public function getFields($entityClass, $config) { $result = []; if (ConfigUtil::isExcludeAll($config)) { if (!empty($config[ConfigUtil::FIELDS])) { foreach ($config[ConfigUtil::FIELDS] as $field => $fieldConfig) { if (null === $fieldConfig || !ConfigUtil::isExclude($fieldConfig)) { $result[] = $field; } } } } else { $entityMetadata = $this->doctrineHelper->getEntityMetadata($entityClass); $fields = array_merge($entityMetadata->getFieldNames(), $entityMetadata->getAssociationNames()); foreach ($fields as $field) { if (ConfigUtil::hasFieldConfig($config, $field)) { $fieldConfig = $config[ConfigUtil::FIELDS][$field]; if (null === $fieldConfig || !ConfigUtil::isExclude($fieldConfig)) { $result[] = $field; } } elseif ($this->isApplicableField($entityClass, $field)) { $result[] = $field; } } if (!empty($config[ConfigUtil::FIELDS])) { foreach ($config[ConfigUtil::FIELDS] as $field => $fieldConfig) { if ($this->isMetadataProperty($field)) { $result[] = $field; } } } } return $result; }
/** * @param mixed $fieldConfig * * @return bool */ protected function isExcludedField($fieldConfig) { return null !== $fieldConfig && ConfigUtil::isExclude($fieldConfig); }