Mifiel / php-api-client

Mifiel API Client for PHP
3 stars 8 forks source link

Document::all() retorna un array vacío #7

Open gabrielchavezme opened 4 years ago

gabrielchavezme commented 4 years ago

Estoy utilizando el método estático all() de la clase Document para traer todos los documentos de la cuenta de mifiel.com pero al momento de hacer un debug de la aplicación me retorna un array vacío.

Le di un vistazo al código y he notado lo siguiente:

public static function all() {
    self::validateResuorceName();
    $response = ApiClient::get(static::$resourceName);
    $response_body_arr = json_decode($response->getBody());
    $return = array();
    foreach ($response_body_arr as $object) {
      $return[] = new static($object);
    }
    return $return;
  }

Esta función retorna una clase estática y la vuelve inaccesible para llamarla a otros métodos, por eso retorna el array vacío.

He realizado el siguiente cambio:

public static function all() {
    self::validateResuorceName();
    $response = ApiClient::get(static::$resourceName);
    $response_body_arr = json_decode($response->getBody());
    $return = array();
    foreach ($response_body_arr as $object) {
      $return[] = new static($object);
    }
    return $response_body_arr;
  }

Al retornar $response_body_arr estamos pasando el response directo de la clase ApiClient y eso hace accesible toda la data desde otras funciones en mi aplicación.

¿Podrían checar esto?

genaromadrid commented 4 years ago

Que tal @gabrielchavezme, esto pasa porque probablemente no tienes documentos en tu cuenta. La variable $return es un array de instancias de documento, si hacemos lo que propones estaríamos devolviendo solo objetos sin los métodos dentro de cada elemento del array.

Crea un documento, verás que al hacer la llamada te regresará un array con 1 elemento

gabrielchavezme commented 4 years ago

Que tal @gabrielchavezme, esto pasa porque probablemente no tienes documentos en tu cuenta. La variable $return es un array de instancias de documento, si hacemos lo que propones estaríamos devolviendo solo objetos sin los métodos dentro de cada elemento del array.

Crea un documento, verás que al hacer la llamada te regresará un array con 1 elemento

Ya he verificado que tengo documentos en mi cuenta y de hecho me retorna la cantidad de documentos que tengo en mi sandbox de mifiel pero lo que me retorna solamente son objetos vacíos.

Captura del response: https://prnt.sc/syelwa

$documents = Document::all();
return $documents;

Captura de los documentos: https://prnt.sc/syeosu