Skip to content

6.4.0

Choose a tag to compare

@datasage datasage released this 04 Aug 17:26
· 10 commits to 6.4.x since this release

First release of the datasage fork, matching DoctrineModule 6.4.

Supported PHP: 8.2 – 8.5. Both doctrine/orm ^2.20 and ^3.0 are supported, as are doctrine/dbal ^3.3 and ^4.0.

PHP 8.5 requires ORM 3. The only 8.5-capable doctrine-laminas-hydrator (3.7.0) requires doctrine/persistence ^4, and ORM 2.20 requires ^2.4 || ^3 — the two cannot coexist. On PHP 8.2–8.4 you can stay on ORM 2.

Cache: PSR-6

Requires doctrine/doctrine-module ^6.4.1, whose doctrine.cache.* services are now Psr\Cache\CacheItemPoolInterface. The ORM Configuration uses setMetadataCache(), setQueryCache(), setResultCache() and setHydrationCache(); the DBAL configuration uses setResultCache().

Annotations removed

Mapping is declared with PHP attributes. Test and CI fixtures are converted and the drivers are AttributeDriver.

Removed

  • Yuml controller and developer-tools collectors — the only parts of src/ using laminas-mvc, which has no PHP 8.5 release on any branch. laminas/laminas-mvc and laminas/laminas-developer-tools are both dropped. (developer-tools itself caps at PHP 8.4, so the collectors could never have run on 8.5.)
  • laminas/laminas-serializer — unused, and its only 8.5-capable release needs servicemanager ^4, which laminas-form 3 conflicts with.
  • Dead DBAL 2 compatibility code. Three middleware tests had been silently skipping — they guarded with class_exists() against Doctrine\DBAL\Driver\Middleware, which is an interface, so the check was always false. They now actually run.

ORM 3 / DBAL 4 compatibility

Change Handling
EntityManager::create() removed Constructor used; event manager passed explicitly, since DBAL 4 removed Connection::getEventManager() — without it ResolveTargetEntityListener never sees onClassMetadataNotFound and interface targets fail to resolve
Console helper set removed Commands built with EntityManagerProvider; --object-manager still honoured via a shared resolver
Commands removed in ORM 3 Registered from a map, skipping classes the installed major doesn't ship
setClassMetadataFactoryName() typed string Only called when the option is set
Mapping arrays → value objects Return types widened; they implement ArrayAccess so readers are unchanged
LazyGhostTrait removed in Symfony 8 Native lazy objects enabled where the ORM supports them
addNamedQuery, setSQLLogger, markDoctrineTypeCommented, ReservedWordsCommand, EntityManagerHelper Guarded

Upgrading

Install alongside doctrine/doctrine-module ^6.4.1 using a repositories entry pointing at the fork. Applications using the Yuml route, the developer-tools Doctrine panels, or an AnnotationDriver must adjust.

Verified in containers across PHP 8.2–8.5 against both ORM 2.20 and ORM 3 — seven combinations — plus the full CI matrix with MySQL and real CLI command runs.