neomerx / json-api

Framework agnostic JSON API (jsonapi.org) implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

accept same type on Encoder::instance

jebie opened this issue · comments

The main reason is that ModelResource is widely used in all my models. And this is how I structured

class ModelResource extends \stdClass
{
  public static function instance(ShimModel $Model, $data)
  {
    $modelResource = new self();
    $columns = array_keys($Model->schema());

    foreach ($columns as $column) {
      $modelResource->{Inflector::variable($column)} = $data[$column];
    }

    return $modelResource;
  }
}

What happened here is that when I added the same ModelResource more than once, only the last ModelResource Schema was evaluated.

$encoder = Encoder::instance([
  ModelResource::class => Schema1::class,
  ModelResource::class => Schema2::class,
  ModelResource::class => Schema3::class,
]);