Repository navigation
6.4.0
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) requiresdoctrine/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-mvcandlaminas/laminas-developer-toolsare 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()againstDoctrine\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.