Exemplo n.º 1
0
 /**
  * @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);
 }
Exemplo n.º 2
0
 /**
  * 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));
 }