/** * @param \GoIntegro\Hateoas\JsonApi\ResourceEntityInterface|string $entityClassName * @param ResourceRelationships $relationships * @return array * @todo Publicar o eliminar el parámetro $entityClassName. */ protected function getFields($entityClassName, ResourceRelationships $relationships) { $fields = []; $class = $this->metadataCache->getReflection($entityClassName); foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { if (in_array($method->getShortName(), self::$reservedGetters)) { continue; } if (Reflection::isMethodGetter($method)) { $fields[] = Inflector::hyphenate(substr($method->getShortName(), 3)); } } foreach (ResourceRelationships::$kinds as $kind) { $fields = array_diff($fields, array_keys($relationships->{$kind})); } $fields = array_diff($fields, $relationships->dbOnly); return new ResourceFields($fields); }
/** * Para relaciones que no van en el campo "links" del resource object. * @param \ReflectionClass $class * @param string $name * @return boolean * @see http://jsonapi.org/format/#document-structure-url-templates */ private static function isLinkOnlyRelation(\ReflectionClass $class, $name) { $getterName = 'get' . Inflector::camelize($name); return !$class->hasMethod($getterName) || !Reflection::isMethodGetter($class->getMethod($getterName)); }