Download the PHP package bankiru/doctrine-api-client without Composer
On this page you can find all versions of the php package bankiru/doctrine-api-client. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bankiru/doctrine-api-client
More information about bankiru/doctrine-api-client
Files in bankiru/doctrine-api-client
Package doctrine-api-client
Short Description Doctrine-faced RPC API Client
License MIT
Informations about the package doctrine-api-client
Doctrine-faced RPC Client
Implementation of doctrine\common
interfaces with RPC interfaces (scaytrase\rpc-common
)
Usage
Resources/config/api/MyEntity.api.yml
content:
Configure EntityManager
Call entity-manager to retrieve entities through your api
References
You could reference other API entities via relation annotations. General bi-directional self-reference relation below:
In order to make *toMany
relations works flawlessly you should define the mapped class property
as Entity[]|ArrayCollection
as hydrator will substitute your relation property with lazy-loading collection interface.
Note on lazy-loading
Generic API is not a DB, so eager reference pre-fetching will always result in additional API query (excluding super-APIs with prefetching features, not supported now), so current implementation always assumes that all requests are extra-lazy. This means that no data will be fetched until you really need it, and you'll have only lazy proxy object before that happens.
Keep it in the mind
Hacking into fetching process
Custom repository
Just call defined RpcClient from your repository
Or more portable with mapping
Custom Cruds API
Custom field types
You could register additional field types to configuration TypeRegistry
(Configuration::getTypeRegistry()
).
Just implement the Type
and register it via TypeRegistry::add('alias', $type)
.
Doctrine ORM types are simple transformers with no real dependencies available but for
this implementation we gone a bit further and make the types DI capable, so you can
register any instance of Type
as type, so it could be DI-enabled service, with any logic
you need
TBD
- No embeddables
All versions of doctrine-api-client with dependencies
psr/cache Version ~1.0
psr/log Version ~1.0
scaytrase/rpc-common Version ~1.2
doctrine/common Version ~2.5
doctrine/collections Version ~1.3
symfony/options-resolver Version ~2.3|~3.0
symfony/yaml Version ~2.3|~3.0
symfony/property-access Version ~2.3|~3.0