GitHub

php-datatypes-laravel-doctrine

php-datatypes-laravel-doctrine

Bewaar PHP-datatype-waardeobjecten met Doctrine DBAL - automatisch geïnjecteerd in Laravel, geen configuratie nodig.

php-datatypes-laravel-doctrine

Dit pakket maakt het mogelijk om een object van het type hradigital/php-datatypes als gedeclareerd type voor een Doctrine Entity-attribuut te gebruiken. Doctrine bewaart alleen de typen die het zelf meelevert, dus een EmailAddress , een Money of een Address zou anders als primitief type gedeclareerd en handmatig geconverteerd moeten worden bij elke lees- en schrijfbewerking. Het pakket levert één Doctrine DBAL-type per Datatypes-object, plus een Laravel Service Provider die ze allemaal registreert, zodat de Entity het Value-object bevat, terwijl de database een eenvoudige, indexeerbare en leesbare waarde behoudt.

  • Doctrine DBAL-typen - één per Datatypes-object: StrType , EmailAddressType , UrlType , SlugType , DatetimeType , CurrencyType , MoneyType , AddressType en de rest.
  • De standaard PHP-typen zijn NativeDateTimeType , NativeDateTimeImmutableType , NativeDateIntervalType en NativeDateTimeZoneType , dus een entiteit die een eenvoudig type \DateTime bevat, wordt volgens dezelfde naamgevingsconventie toegewezen.
  • Laravel Service Provider - automatisch gedetecteerd, registreert elk type voordat een EntityManager een mapping oplost. Niets te publiceren, niets te configureren.
  • Een naamgevingsregel : de naam van een Doctrine-type is altijd de korte naam van de Type-klasse zelf.
  • Validatie tijdens het invoeren - een validatiefout van een waardeobject wordt weergegeven als een DBAL ConversionException , waardoor een ongeldige waarde wordt afgewezen in plaats van de kolom te beschadigen.
  • Framework-optioneel - de typen zijn standaard DBAL-typen zonder frameworkafhankelijkheid; de serviceprovider is een extraatje.

Wat dit pakket niet is

  • Dit is geen fork of vervanging voor hradigital/php-datatypes Het is ervan afhankelijk en voegt persistentie toe, meer niet. Het gedrag, de validatie en de API van de Value Objects zijn volledig van hen.
  • Het is geen ORM en ook geen verzameling entiteiten. Het voegt kolomtypen toe. Uw entiteiten, mappings en repositories blijven van u.
  • Niet alleen voor Laravel. Zie Gebruik buiten Laravel .

Project bezoeken