neomerx / json-api

Framework agnostic JSON API (jsonapi.org) implementation
Apache License 2.0
743 stars 66 forks source link

Support interface/superclass based mapping in SchemaContainer #254

Open samizdam opened 3 years ago

samizdam commented 3 years ago

Case: I have multiple implementation for my entity interface and one schema for all it.

Now SchemaContainer

New logic for support interface/superclass in map for encoder should check class hierarchy in entries.

Now I need create proxy for all resource and wrap all data entries in my request handler. Another possible ugly way - write every final implementation to encoder map with dublicated schema. Manual to config file, or generate by some rules (scan sources, annotations, etc). 20-50 entries in my case.

issa commented 3 years ago

I had to create a subclass of SchemaContainer containing this:

    public function register(string $type, $schema): void
    {
        if (true === empty($type) || (false === \class_exists($type) && false === \interface_exists($type))) {
            throw new InvalidArgumentException(_(static::MSG_INVALID_MODEL_TYPE));
        }
    // …

But I would prefer to not have to do this as well.