From 47f865ad26fd502b7999484afafc7bb07b8156e5 Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Thu, 4 Aug 2022 00:03:48 +0200 Subject: [PATCH] Flag properties as readonly if possible --- lib/Doctrine/ORM/Cache/DefaultCache.php | 6 +-- .../ORM/Cache/DefaultCollectionHydrator.php | 4 +- lib/Doctrine/ORM/Cache/DefaultQueryCache.php | 8 ++-- .../ORM/Cache/Region/DefaultRegion.php | 6 +-- .../ORM/Cache/Region/FileLockRegion.php | 6 +-- lib/Doctrine/ORM/EntityRepository.php | 6 +-- .../ORM/Internal/HydrationCompleteHandler.php | 6 ++- .../Mapping/ReflectionEmbeddedProperty.php | 6 +-- .../ORM/Mapping/ReflectionEnumProperty.php | 4 +- .../Mapping/ReflectionReadonlyProperty.php | 2 +- lib/Doctrine/ORM/Query/Filter/SQLFilter.php | 2 +- lib/Doctrine/ORM/Query/FilterCollection.php | 2 +- .../ORM/Query/ResultSetMappingBuilder.php | 4 +- lib/Doctrine/ORM/Query/SqlWalker.php | 14 +++--- lib/Doctrine/ORM/Query/TreeWalkerAdapter.php | 4 +- lib/Doctrine/ORM/Query/TreeWalkerChain.php | 4 +- lib/Doctrine/ORM/QueryBuilder.php | 2 +- .../Command/AbstractEntityManagerCommand.php | 2 +- .../ConnectionFromManagerProvider.php | 2 +- .../SingleManagerProvider.php | 4 +- .../ORM/Tools/DebugUnitOfWorkListener.php | 4 +- .../Tools/Event/GenerateSchemaEventArgs.php | 4 +- .../Event/GenerateSchemaTableEventArgs.php | 6 +-- .../ORM/Tools/Pagination/Paginator.php | 8 ++-- lib/Doctrine/ORM/Tools/SchemaTool.php | 8 ++-- lib/Doctrine/ORM/Tools/SchemaValidator.php | 2 +- lib/Doctrine/ORM/UnitOfWork.php | 10 ++--- .../ORM/Utility/IdentifierFlattener.php | 4 +- .../Mock/NonProxyLoadingEntityManager.php | 2 +- .../Tests/DbalExtensions/SqlLogger.php | 2 +- .../Tests/Mocks/ConcurrentRegionMock.php | 2 +- .../Tests/ORM/Cache/FileLockRegionTest.php | 44 +++---------------- 32 files changed, 81 insertions(+), 109 deletions(-) diff --git a/lib/Doctrine/ORM/Cache/DefaultCache.php b/lib/Doctrine/ORM/Cache/DefaultCache.php index aa0f27e7a24..f46fb12a996 100644 --- a/lib/Doctrine/ORM/Cache/DefaultCache.php +++ b/lib/Doctrine/ORM/Cache/DefaultCache.php @@ -20,8 +20,8 @@ */ class DefaultCache implements Cache { - private UnitOfWork $uow; - private CacheFactory $cacheFactory; + private readonly UnitOfWork $uow; + private readonly CacheFactory $cacheFactory; /** * @var QueryCache[] @@ -32,7 +32,7 @@ class DefaultCache implements Cache private ?QueryCache $defaultQueryCache = null; public function __construct( - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { $this->uow = $em->getUnitOfWork(); $this->cacheFactory = $em->getConfiguration() diff --git a/lib/Doctrine/ORM/Cache/DefaultCollectionHydrator.php b/lib/Doctrine/ORM/Cache/DefaultCollectionHydrator.php index 9ea7729a74b..f5023f22be2 100644 --- a/lib/Doctrine/ORM/Cache/DefaultCollectionHydrator.php +++ b/lib/Doctrine/ORM/Cache/DefaultCollectionHydrator.php @@ -19,13 +19,13 @@ */ class DefaultCollectionHydrator implements CollectionHydrator { - private UnitOfWork $uow; + private readonly UnitOfWork $uow; /** @var array */ private static array $hints = [Query::HINT_CACHE_ENABLED => true]; public function __construct( - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { $this->uow = $em->getUnitOfWork(); } diff --git a/lib/Doctrine/ORM/Cache/DefaultQueryCache.php b/lib/Doctrine/ORM/Cache/DefaultQueryCache.php index 3eff193d9fa..67126f8234e 100644 --- a/lib/Doctrine/ORM/Cache/DefaultQueryCache.php +++ b/lib/Doctrine/ORM/Cache/DefaultQueryCache.php @@ -32,16 +32,16 @@ */ class DefaultQueryCache implements QueryCache { - private UnitOfWork $uow; - private QueryCacheValidator $validator; + private readonly UnitOfWork $uow; + private readonly QueryCacheValidator $validator; protected ?CacheLogger $cacheLogger = null; /** @var array */ private static array $hints = [Query::HINT_CACHE_ENABLED => true]; public function __construct( - private EntityManagerInterface $em, - private Region $region + private readonly EntityManagerInterface $em, + private readonly Region $region ) { $cacheConfig = $em->getConfiguration()->getSecondLevelCacheConfiguration(); diff --git a/lib/Doctrine/ORM/Cache/Region/DefaultRegion.php b/lib/Doctrine/ORM/Cache/Region/DefaultRegion.php index baca09481a2..3d4d474d768 100644 --- a/lib/Doctrine/ORM/Cache/Region/DefaultRegion.php +++ b/lib/Doctrine/ORM/Cache/Region/DefaultRegion.php @@ -27,9 +27,9 @@ class DefaultRegion implements Region private const REGION_PREFIX = 'DC2_REGION_'; public function __construct( - private string $name, - private CacheItemPoolInterface $cacheItemPool, - private int $lifetime = 0 + private readonly string $name, + private readonly CacheItemPoolInterface $cacheItemPool, + private readonly int $lifetime = 0 ) { } diff --git a/lib/Doctrine/ORM/Cache/Region/FileLockRegion.php b/lib/Doctrine/ORM/Cache/Region/FileLockRegion.php index b9264796036..f30f404477f 100644 --- a/lib/Doctrine/ORM/Cache/Region/FileLockRegion.php +++ b/lib/Doctrine/ORM/Cache/Region/FileLockRegion.php @@ -43,9 +43,9 @@ class FileLockRegion implements ConcurrentRegion * @throws InvalidArgumentException */ public function __construct( - private Region $region, - private string $directory, - private string|int $lockLifetime + private readonly Region $region, + private readonly string $directory, + private readonly string|int $lockLifetime ) { if (! is_dir($directory) && ! @mkdir($directory, 0775, true)) { throw new InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $directory)); diff --git a/lib/Doctrine/ORM/EntityRepository.php b/lib/Doctrine/ORM/EntityRepository.php index 42c0ab7d08d..245c0d02ade 100644 --- a/lib/Doctrine/ORM/EntityRepository.php +++ b/lib/Doctrine/ORM/EntityRepository.php @@ -36,15 +36,15 @@ class EntityRepository implements ObjectRepository, Selectable { /** @psalm-var class-string */ - private string $entityName; + private readonly string $entityName; private static ?Inflector $inflector = null; /** * @psalm-param ClassMetadata $class */ public function __construct( - private EntityManagerInterface $em, - private ClassMetadata $class + private readonly EntityManagerInterface $em, + private readonly ClassMetadata $class ) { $this->entityName = $class->name; } diff --git a/lib/Doctrine/ORM/Internal/HydrationCompleteHandler.php b/lib/Doctrine/ORM/Internal/HydrationCompleteHandler.php index bd109686a68..8a97d398cd2 100644 --- a/lib/Doctrine/ORM/Internal/HydrationCompleteHandler.php +++ b/lib/Doctrine/ORM/Internal/HydrationCompleteHandler.php @@ -19,8 +19,10 @@ final class HydrationCompleteHandler /** @var mixed[][] */ private array $deferredPostLoadInvocations = []; - public function __construct(private ListenersInvoker $listenersInvoker, private EntityManagerInterface $em) - { + public function __construct( + private readonly ListenersInvoker $listenersInvoker, + private readonly EntityManagerInterface $em, + ) { } /** diff --git a/lib/Doctrine/ORM/Mapping/ReflectionEmbeddedProperty.php b/lib/Doctrine/ORM/Mapping/ReflectionEmbeddedProperty.php index b38ddfecc0c..024b37a31d9 100644 --- a/lib/Doctrine/ORM/Mapping/ReflectionEmbeddedProperty.php +++ b/lib/Doctrine/ORM/Mapping/ReflectionEmbeddedProperty.php @@ -26,9 +26,9 @@ final class ReflectionEmbeddedProperty extends ReflectionProperty * @psalm-param class-string $embeddedClass */ public function __construct( - private ReflectionProperty $parentProperty, - private ReflectionProperty $childProperty, - private string $embeddedClass + private readonly ReflectionProperty $parentProperty, + private readonly ReflectionProperty $childProperty, + private readonly string $embeddedClass ) { parent::__construct($childProperty->getDeclaringClass()->getName(), $childProperty->getName()); } diff --git a/lib/Doctrine/ORM/Mapping/ReflectionEnumProperty.php b/lib/Doctrine/ORM/Mapping/ReflectionEnumProperty.php index 0645a9ba35f..98448d519fd 100644 --- a/lib/Doctrine/ORM/Mapping/ReflectionEnumProperty.php +++ b/lib/Doctrine/ORM/Mapping/ReflectionEnumProperty.php @@ -18,8 +18,8 @@ final class ReflectionEnumProperty extends ReflectionProperty * @param class-string $enumType */ public function __construct( - private ReflectionProperty $originalReflectionProperty, - private string $enumType + private readonly ReflectionProperty $originalReflectionProperty, + private readonly string $enumType ) { parent::__construct( $originalReflectionProperty->getDeclaringClass()->getName(), diff --git a/lib/Doctrine/ORM/Mapping/ReflectionReadonlyProperty.php b/lib/Doctrine/ORM/Mapping/ReflectionReadonlyProperty.php index fba314be12e..c3697226abc 100644 --- a/lib/Doctrine/ORM/Mapping/ReflectionReadonlyProperty.php +++ b/lib/Doctrine/ORM/Mapping/ReflectionReadonlyProperty.php @@ -20,7 +20,7 @@ final class ReflectionReadonlyProperty extends ReflectionProperty { public function __construct( - private ReflectionProperty $wrappedProperty + private readonly ReflectionProperty $wrappedProperty ) { if (! $wrappedProperty->isReadOnly()) { throw new InvalidArgumentException('Given property is not readonly.'); diff --git a/lib/Doctrine/ORM/Query/Filter/SQLFilter.php b/lib/Doctrine/ORM/Query/Filter/SQLFilter.php index 5c41fba8d7f..5ced1fc61e8 100644 --- a/lib/Doctrine/ORM/Query/Filter/SQLFilter.php +++ b/lib/Doctrine/ORM/Query/Filter/SQLFilter.php @@ -33,7 +33,7 @@ abstract class SQLFilter private array $parameters = []; final public function __construct( - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { } diff --git a/lib/Doctrine/ORM/Query/FilterCollection.php b/lib/Doctrine/ORM/Query/FilterCollection.php index c0ec5ecb39d..c226e59d961 100644 --- a/lib/Doctrine/ORM/Query/FilterCollection.php +++ b/lib/Doctrine/ORM/Query/FilterCollection.php @@ -49,7 +49,7 @@ class FilterCollection private int $filtersState = self::FILTERS_STATE_CLEAN; public function __construct( - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { $this->config = $em->getConfiguration(); } diff --git a/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php b/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php index c687fc99d8e..213e7faa0f4 100644 --- a/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php +++ b/lib/Doctrine/ORM/Query/ResultSetMappingBuilder.php @@ -49,8 +49,8 @@ class ResultSetMappingBuilder extends ResultSetMapping * @psalm-param self::COLUMN_RENAMING_* $defaultRenameMode */ public function __construct( - private EntityManagerInterface $em, - private int $defaultRenameMode = self::COLUMN_RENAMING_NONE, + private readonly EntityManagerInterface $em, + private readonly int $defaultRenameMode = self::COLUMN_RENAMING_NONE, ) { } diff --git a/lib/Doctrine/ORM/Query/SqlWalker.php b/lib/Doctrine/ORM/Query/SqlWalker.php index 0161545dbc5..7d693e10ed1 100644 --- a/lib/Doctrine/ORM/Query/SqlWalker.php +++ b/lib/Doctrine/ORM/Query/SqlWalker.php @@ -54,7 +54,7 @@ class SqlWalker */ public const HINT_PARTIAL = 'doctrine.partial'; - private ResultSetMapping $rsm; + private readonly ResultSetMapping $rsm; /** * Counter for generating unique column aliases. @@ -81,8 +81,8 @@ class SqlWalker */ private int $newObjectCounter = 0; - private EntityManagerInterface $em; - private Connection $conn; + private readonly EntityManagerInterface $em; + private readonly Connection $conn; /** @var mixed[] */ private array $tableAliasMap = []; @@ -131,19 +131,19 @@ class SqlWalker /** * The database platform abstraction. */ - private AbstractPlatform $platform; + private readonly AbstractPlatform $platform; /** * The quote strategy. */ - private QuoteStrategy $quoteStrategy; + private readonly QuoteStrategy $quoteStrategy; /** * @psalm-param array $queryComponents The query components (symbol table). */ public function __construct( - private Query $query, - private ParserResult $parserResult, + private readonly Query $query, + private readonly ParserResult $parserResult, private array $queryComponents ) { $this->rsm = $parserResult->getResultSetMapping(); diff --git a/lib/Doctrine/ORM/Query/TreeWalkerAdapter.php b/lib/Doctrine/ORM/Query/TreeWalkerAdapter.php index bdc3f353168..247ac02447f 100644 --- a/lib/Doctrine/ORM/Query/TreeWalkerAdapter.php +++ b/lib/Doctrine/ORM/Query/TreeWalkerAdapter.php @@ -24,8 +24,8 @@ abstract class TreeWalkerAdapter implements TreeWalker * {@inheritdoc} */ public function __construct( - private AbstractQuery $query, - private ParserResult $parserResult, + private readonly AbstractQuery $query, + private readonly ParserResult $parserResult, private array $queryComponents ) { } diff --git a/lib/Doctrine/ORM/Query/TreeWalkerChain.php b/lib/Doctrine/ORM/Query/TreeWalkerChain.php index 4c4b34f7301..0c37e58e545 100644 --- a/lib/Doctrine/ORM/Query/TreeWalkerChain.php +++ b/lib/Doctrine/ORM/Query/TreeWalkerChain.php @@ -28,8 +28,8 @@ class TreeWalkerChain implements TreeWalker * {@inheritdoc} */ public function __construct( - private AbstractQuery $query, - private ParserResult $parserResult, + private readonly AbstractQuery $query, + private readonly ParserResult $parserResult, private array $queryComponents ) { } diff --git a/lib/Doctrine/ORM/QueryBuilder.php b/lib/Doctrine/ORM/QueryBuilder.php index 8c0e23709fe..3e37d88cccd 100644 --- a/lib/Doctrine/ORM/QueryBuilder.php +++ b/lib/Doctrine/ORM/QueryBuilder.php @@ -138,7 +138,7 @@ class QueryBuilder * @param EntityManagerInterface $em The EntityManager to use. */ public function __construct( - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { $this->parameters = new ArrayCollection(); } diff --git a/lib/Doctrine/ORM/Tools/Console/Command/AbstractEntityManagerCommand.php b/lib/Doctrine/ORM/Tools/Console/Command/AbstractEntityManagerCommand.php index 1da54248d93..370f4fb6026 100644 --- a/lib/Doctrine/ORM/Tools/Console/Command/AbstractEntityManagerCommand.php +++ b/lib/Doctrine/ORM/Tools/Console/Command/AbstractEntityManagerCommand.php @@ -11,7 +11,7 @@ abstract class AbstractEntityManagerCommand extends Command { - public function __construct(private EntityManagerProvider $entityManagerProvider) + public function __construct(private readonly EntityManagerProvider $entityManagerProvider) { parent::__construct(); } diff --git a/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/ConnectionFromManagerProvider.php b/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/ConnectionFromManagerProvider.php index 8b677fddc40..07766016054 100644 --- a/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/ConnectionFromManagerProvider.php +++ b/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/ConnectionFromManagerProvider.php @@ -10,7 +10,7 @@ final class ConnectionFromManagerProvider implements ConnectionProvider { - public function __construct(private EntityManagerProvider $entityManagerProvider) + public function __construct(private readonly EntityManagerProvider $entityManagerProvider) { } diff --git a/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/SingleManagerProvider.php b/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/SingleManagerProvider.php index 3b8f5d8c0e0..ebe60c913cd 100644 --- a/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/SingleManagerProvider.php +++ b/lib/Doctrine/ORM/Tools/Console/EntityManagerProvider/SingleManagerProvider.php @@ -10,8 +10,8 @@ final class SingleManagerProvider implements EntityManagerProvider { public function __construct( - private EntityManagerInterface $entityManager, - private string $defaultManagerName = 'default', + private readonly EntityManagerInterface $entityManager, + private readonly string $defaultManagerName = 'default', ) { } diff --git a/lib/Doctrine/ORM/Tools/DebugUnitOfWorkListener.php b/lib/Doctrine/ORM/Tools/DebugUnitOfWorkListener.php index 6147572f997..36fccf9874a 100644 --- a/lib/Doctrine/ORM/Tools/DebugUnitOfWorkListener.php +++ b/lib/Doctrine/ORM/Tools/DebugUnitOfWorkListener.php @@ -32,8 +32,8 @@ class DebugUnitOfWorkListener * The stream can be php://output to print to the screen. */ public function __construct( - private string $file = 'php://output', - private string $context = '' + private readonly string $file = 'php://output', + private readonly string $context = '' ) { } diff --git a/lib/Doctrine/ORM/Tools/Event/GenerateSchemaEventArgs.php b/lib/Doctrine/ORM/Tools/Event/GenerateSchemaEventArgs.php index 0276534c85d..7af3e775d2b 100644 --- a/lib/Doctrine/ORM/Tools/Event/GenerateSchemaEventArgs.php +++ b/lib/Doctrine/ORM/Tools/Event/GenerateSchemaEventArgs.php @@ -16,8 +16,8 @@ class GenerateSchemaEventArgs extends EventArgs { public function __construct( - private EntityManagerInterface $em, - private Schema $schema + private readonly EntityManagerInterface $em, + private readonly Schema $schema ) { } diff --git a/lib/Doctrine/ORM/Tools/Event/GenerateSchemaTableEventArgs.php b/lib/Doctrine/ORM/Tools/Event/GenerateSchemaTableEventArgs.php index ddb6ede0ce0..f7da465bf19 100644 --- a/lib/Doctrine/ORM/Tools/Event/GenerateSchemaTableEventArgs.php +++ b/lib/Doctrine/ORM/Tools/Event/GenerateSchemaTableEventArgs.php @@ -17,9 +17,9 @@ class GenerateSchemaTableEventArgs extends EventArgs { public function __construct( - private ClassMetadata $classMetadata, - private Schema $schema, - private Table $classTable + private readonly ClassMetadata $classMetadata, + private readonly Schema $schema, + private readonly Table $classTable ) { } diff --git a/lib/Doctrine/ORM/Tools/Pagination/Paginator.php b/lib/Doctrine/ORM/Tools/Pagination/Paginator.php index ca2684ebc14..c24ac4c0350 100644 --- a/lib/Doctrine/ORM/Tools/Pagination/Paginator.php +++ b/lib/Doctrine/ORM/Tools/Pagination/Paginator.php @@ -31,15 +31,17 @@ class Paginator implements Countable, IteratorAggregate { use SQLResultCasing; - private Query $query; + private readonly Query $query; private ?bool $useOutputWalkers = null; private ?int $count = null; /** * @param bool $fetchJoinCollection Whether the query joins a collection (true by default). */ - public function __construct(Query|QueryBuilder $query, private bool $fetchJoinCollection = true) - { + public function __construct( + Query|QueryBuilder $query, + private readonly bool $fetchJoinCollection = true + ) { if ($query instanceof QueryBuilder) { $query = $query->getQuery(); } diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php index 6010743cc2f..6018e70209a 100644 --- a/lib/Doctrine/ORM/Tools/SchemaTool.php +++ b/lib/Doctrine/ORM/Tools/SchemaTool.php @@ -48,15 +48,15 @@ class SchemaTool { private const KNOWN_COLUMN_OPTIONS = ['comment', 'unsigned', 'fixed', 'default']; - private AbstractPlatform $platform; - private QuoteStrategy $quoteStrategy; - private AbstractSchemaManager $schemaManager; + private readonly AbstractPlatform $platform; + private readonly QuoteStrategy $quoteStrategy; + private readonly AbstractSchemaManager $schemaManager; /** * Initializes a new SchemaTool instance that uses the connection of the * provided EntityManager. */ - public function __construct(private EntityManagerInterface $em) + public function __construct(private readonly EntityManagerInterface $em) { $this->platform = $em->getConnection()->getDatabasePlatform(); $this->quoteStrategy = $em->getConfiguration()->getQuoteStrategy(); diff --git a/lib/Doctrine/ORM/Tools/SchemaValidator.php b/lib/Doctrine/ORM/Tools/SchemaValidator.php index deb47a2ae35..7e56a0418aa 100644 --- a/lib/Doctrine/ORM/Tools/SchemaValidator.php +++ b/lib/Doctrine/ORM/Tools/SchemaValidator.php @@ -25,7 +25,7 @@ */ class SchemaValidator { - public function __construct(private EntityManagerInterface $em) + public function __construct(private readonly EntityManagerInterface $em) { } diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index 4ceddeb8406..69a85ade0fd 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -247,17 +247,17 @@ class UnitOfWork implements PropertyChangedListener /** * The EventManager used for dispatching events. */ - private EventManager $evm; + private readonly EventManager $evm; /** * The ListenersInvoker used for dispatching events. */ - private ListenersInvoker $listenersInvoker; + private readonly ListenersInvoker $listenersInvoker; /** * The IdentifierFlattener used for manipulating identifiers */ - private IdentifierFlattener $identifierFlattener; + private readonly IdentifierFlattener $identifierFlattener; /** * Orphaned entities that are scheduled for removal. @@ -285,7 +285,7 @@ class UnitOfWork implements PropertyChangedListener /** * Helper for handling completion of hydration */ - private HydrationCompleteHandler $hydrationCompleteHandler; + private readonly HydrationCompleteHandler $hydrationCompleteHandler; /** * Initializes a new UnitOfWork instance, bound to the given EntityManager. @@ -293,7 +293,7 @@ class UnitOfWork implements PropertyChangedListener * @param EntityManagerInterface $em The EntityManager that "owns" this UnitOfWork instance. */ public function __construct( - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { $this->evm = $em->getEventManager(); $this->listenersInvoker = new ListenersInvoker($em); diff --git a/lib/Doctrine/ORM/Utility/IdentifierFlattener.php b/lib/Doctrine/ORM/Utility/IdentifierFlattener.php index fa8677e25bd..b573ae200d9 100644 --- a/lib/Doctrine/ORM/Utility/IdentifierFlattener.php +++ b/lib/Doctrine/ORM/Utility/IdentifierFlattener.php @@ -26,11 +26,11 @@ public function __construct( /** * The UnitOfWork used to coordinate object-level transactions. */ - private UnitOfWork $unitOfWork, + private readonly UnitOfWork $unitOfWork, /** * The metadata factory, used to retrieve the ORM metadata of entity classes. */ - private ClassMetadataFactory $metadataFactory + private readonly ClassMetadataFactory $metadataFactory ) { } diff --git a/tests/Doctrine/Performance/Mock/NonProxyLoadingEntityManager.php b/tests/Doctrine/Performance/Mock/NonProxyLoadingEntityManager.php index fac993f7408..6e7a8745534 100644 --- a/tests/Doctrine/Performance/Mock/NonProxyLoadingEntityManager.php +++ b/tests/Doctrine/Performance/Mock/NonProxyLoadingEntityManager.php @@ -28,7 +28,7 @@ */ class NonProxyLoadingEntityManager implements EntityManagerInterface { - public function __construct(private EntityManagerInterface $realEntityManager) + public function __construct(private readonly EntityManagerInterface $realEntityManager) { } diff --git a/tests/Doctrine/Tests/DbalExtensions/SqlLogger.php b/tests/Doctrine/Tests/DbalExtensions/SqlLogger.php index 17270a707af..6192ac7ae00 100644 --- a/tests/Doctrine/Tests/DbalExtensions/SqlLogger.php +++ b/tests/Doctrine/Tests/DbalExtensions/SqlLogger.php @@ -8,7 +8,7 @@ final class SqlLogger extends AbstractLogger { - public function __construct(private QueryLog $queryLog) + public function __construct(private readonly QueryLog $queryLog) { } diff --git a/tests/Doctrine/Tests/Mocks/ConcurrentRegionMock.php b/tests/Doctrine/Tests/Mocks/ConcurrentRegionMock.php index 8c29aa64db7..6babfa94b17 100644 --- a/tests/Doctrine/Tests/Mocks/ConcurrentRegionMock.php +++ b/tests/Doctrine/Tests/Mocks/ConcurrentRegionMock.php @@ -32,7 +32,7 @@ class ConcurrentRegionMock implements ConcurrentRegion public array $locks = []; public function __construct( - private Region $region + private readonly Region $region ) { } diff --git a/tests/Doctrine/Tests/ORM/Cache/FileLockRegionTest.php b/tests/Doctrine/Tests/ORM/Cache/FileLockRegionTest.php index 06c51cb9d38..e5bd749e55e 100644 --- a/tests/Doctrine/Tests/ORM/Cache/FileLockRegionTest.php +++ b/tests/Doctrine/Tests/ORM/Cache/FileLockRegionTest.php @@ -13,24 +13,17 @@ use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use ReflectionMethod; -use ReflectionProperty; use function file_put_contents; use function is_dir; -use function restore_error_handler; use function rmdir; -use function set_error_handler; -use function str_repeat; use function sys_get_temp_dir; use function uniqid; use function unlink; -use const E_WARNING; - /** * @extends RegionTestCase * @group DDC-2183 - * @extends AbstractRegionTest */ class FileLockRegionTest extends RegionTestCase { @@ -45,18 +38,16 @@ private function getFileName(FileLockRegion $region, CacheKey $key): string { $reflection = new ReflectionMethod($region, 'getLockFileName'); - $reflection->setAccessible(true); - return $reflection->invoke($region, $key); } - protected function createRegion(): FileLockRegion + protected function createRegion(int $lockLifetime = 60): FileLockRegion { $this->directory = sys_get_temp_dir() . '/doctrine_lock_' . uniqid(); $region = new DefaultRegion('concurren_region_test', $this->cacheItemPool); - return new FileLockRegion($region, $this->directory, 60); + return new FileLockRegion($region, $this->directory, $lockLifetime); } public function testGetRegionName(): void @@ -221,13 +212,10 @@ public function testLockedEvictAll(): void public function testLockLifetime(): void { - $key = new CacheKeyMock('key'); - $entry = new CacheEntryMock(['foo' => 'bar']); - $file = $this->getFileName($this->region, $key); - $property = new ReflectionProperty($this->region, 'lockLifetime'); - - $property->setAccessible(true); - $property->setValue($this->region, -10); + $this->region = $this->createRegion(-10); + $key = new CacheKeyMock('key'); + $entry = new CacheEntryMock(['foo' => 'bar']); + $file = $this->getFileName($this->region, $key); self::assertFalse($this->region->contains($key)); self::assertTrue($this->region->put($key, $entry)); @@ -243,26 +231,6 @@ public function testLockLifetime(): void self::assertFileDoesNotExist($file); } - /** - * @group 1072 - * @group DDC-3191 - */ - public function testHandlesScanErrorsGracefullyOnEvictAll(): void - { - $region = $this->createRegion(); - $reflectionDirectory = new ReflectionProperty($region, 'directory'); - - $reflectionDirectory->setAccessible(true); - $reflectionDirectory->setValue($region, str_repeat('a', 10000)); - - set_error_handler(static fn (): bool => true, E_WARNING); - try { - self::assertTrue($region->evictAll()); - } finally { - restore_error_handler(); - } - } - private function cleanTestDirectory(?string $path): void { $path = $path ?: $this->directory;