GitHub

php-datatypes-laravel-doctrine

php-datatypes-laravel-doctrine

PHP-Datentypen-Wertobjekte mit Doctrine DBAL speichern – Laravel-Autowiring, keine Konfiguration erforderlich

php-Datentypen-Laravel-Doktrin

Dieses Paket ermöglicht es, ein Objekt vom hradigital/php-datatypes als deklarierten Typ eines Doctrine-Entity-Attributs festzulegen. Doctrine speichert nur die mitgelieferten Typen. Andernfalls müssten EmailAddress , Money oder Address als primitive Datentypen deklariert und bei jedem Lese- und Schreibvorgang manuell konvertiert werden. Das Paket enthält einen Doctrine-DBAL-Typ pro Datatypes-Objekt sowie einen Laravel-Service-Provider, der alle Typen registriert. Dadurch speichert die Entity das Wertobjekt, während die Datenbank weiterhin einen einfachen, indizierbaren und lesbaren Wert speichert.

  • Doctrine DBAL-Typen - einer pro Datatypes-Objekt: StrType , EmailAddressType , UrlType , SlugType , DatetimeType , CurrencyType , MoneyType , AddressType und der Rest.
  • Native PHP-Typen - NativeDateTimeType , NativeDateTimeImmutableType , NativeDateIntervalType und NativeDateTimeZoneType , sodass eine Entität, die eine einfache \DateTime -Map enthält, unter der gleichen Namenskonvention fällt.
  • Laravel-Service-Provider – wird automatisch erkannt und registriert jeden Typ, bevor ein EntityManager eine Zuordnung auflöst. Nichts zu veröffentlichen, nichts zu konfigurieren.
  • Eine Namensregel – der Name eines Doctrine-Typs ist immer der Kurzname der Typklasse selbst.
  • Validierung beim Eingang - ein Validierungsfehler eines Wertobjekts wird als DBAL ConversionException angezeigt, sodass ein ungültiger Wert abgelehnt wird, anstatt die Spalte zu beschädigen.
  • Framework-optional - die Typen sind einfache DBAL-Typen ohne Framework-Abhängigkeit; der Service Provider ist eine Komfortfunktion.

Was dieses Paket nicht beinhaltet

  • Es handelt sich weder um eine Abspaltung noch um einen Ersatz für hradigital/php-datatypes Es baut darauf auf und fügt Persistenz hinzu, nicht mehr. Das Verhalten, die Validierung und die API der Wertobjekte sind vollständig eigenständig.
  • Kein ORM und keine Sammlung von Entitäten. Es stellt Spaltentypen bereit. Ihre Entitäten, Mappings und Repositories bleiben Ihre.
  • Nicht nur für Laravel. Siehe Verwendung außerhalb von Laravel .

Projekt besuchen