GitHub

php-datatypes-laravel-doctrine

php-datatypes-laravel-doctrine

Persistencia de objetos de valor de tipos de datos PHP con Doctrine DBAL: Laravel con configuración automática y sin necesidad de configuración adicional.

php-datatypes-laravel-doctrine

Este paquete permite que un objeto hradigital/php-datatypes sea el tipo declarado de un atributo de Doctrine Entity. Doctrine solo conserva los tipos que incluye, por lo que un EmailAddress , un Money o un Address tendrían que declararse como primitivos y convertirse manualmente en cada lectura y escritura. Incluye un tipo DBAL de Doctrine por cada objeto Datatypes, además de un proveedor de servicios de Laravel que los registra todos, de modo que la entidad contiene el objeto Value mientras que la base de datos conserva un valor simple, indexable y legible.

  • Tipos DBAL de Doctrine : uno por objeto Datatypes: StrType , EmailAddressType , UrlType , SlugType , DatetimeType , CurrencyType , MoneyType , AddressType y el resto.
  • Tipos nativos de PHP : NativeDateTimeType , NativeDateTimeImmutableType , NativeDateIntervalType y NativeDateTimeZoneType , por lo que una entidad que contiene un simple \DateTime se asigna bajo la misma convención de nomenclatura.
  • Proveedor de servicios de Laravel : se detecta automáticamente y registra cada tipo antes de que cualquier EntityManager resuelva una asignación. No hay nada que publicar ni que configurar.
  • Una regla de nomenclatura : el nombre de un tipo de Doctrine siempre es el nombre corto de la propia clase Type.
  • Validación en la entrada : un fallo de validación de un objeto de valor se manifiesta como un DBAL ConversionException , por lo que un valor no válido se rechaza en lugar de corromper la columna.
  • Framework-optional : los tipos son tipos DBAL simples sin dependencia de framework; el proveedor de servicios es una conveniencia.

Lo que este paquete no es

  • No es una bifurcación ni un reemplazo para hradigital/php-datatypes Depende de él y le añade persistencia, nada más. El comportamiento, la validación y la API de los objetos de valor son completamente suyos.
  • No es un ORM ni un conjunto de entidades. Aporta tipos de columnas. Tus entidades, asignaciones y repositorios siguen siendo tuyos.
  • No es exclusivo de Laravel. Consulta la sección "Usarlo fuera de Laravel" .

Visitar proyecto