Download the PHP package martingold/autotype without Composer
On this page you can find all versions of the php package martingold/autotype. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download martingold/autotype
More information about martingold/autotype
Files in martingold/autotype
Package autotype
Short Description Automatically register value objects (DTOs, crates) as Doctrine types
License MIT
Informations about the package autotype
AutoType
Library for auto-registering value objects (crates, DTOs) as Doctrine types.
Wouldn't it be nice if you could use your Value Objects as entity type directly? With AutoType you do not have to create doctrine type for every single value object type.
Usage
You have few options:
- Add
#[ValueGetter]
and#[Constructor]
(not required) attributes to your ValueObject, DTO, Crate, ... - Make your objects implement ValueObject interface
- Create your own driver (implement your own
TypeDefinitionDriver
). See below 👇
Example using attributes:
Register types at the entry point of your application (kernel boot when using symfony):
Use the value object directly in your entities.
Drivers
See tests/Entity
for the example usage of the drivers. The library comes with two default drivers:
AttributeTypeDefinitionDriver
This driver registers all classes with a #[ValueGetter]
method as Doctrine types. If a static factory
method is needed, add the #[Constructor]
to the method which should be used for constructing the object back from
database value.
InterfaceTypeDefinitionDriver
This driver registers all classes implementing ValueObject
interface.
Custom driver
If you have existing value objects based on your project's conventions and do not want to add additional interfaces or custom attributes, you can implement your own driver and use it during type registration:
The possibilities are endless. You can even specify your own custom dynamic types in
case you have special requirements like column length or database-specific optimizations.
See AttributeTypeDefinitionDriver
and InterfaceTypeDefinitionDriver
for more examples.
All versions of autotype with dependencies
doctrine/dbal Version ^4.2
league/construct-finder Version ^1.4
psr/cache Version ^3.0