Skip to content

Commit

Permalink
Add native types
Browse files Browse the repository at this point in the history
  • Loading branch information
franmomu committed Dec 13, 2023
1 parent f190d18 commit 97f2648
Show file tree
Hide file tree
Showing 20 changed files with 49 additions and 113 deletions.
4 changes: 2 additions & 2 deletions APM/CommandLoggerRegistry.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ public function __construct(iterable $commandLoggers)

public function register(): void
{
array_map(static function (CommandLoggerInterface $commandLogger) {
array_map(static function (CommandLoggerInterface $commandLogger): void {
$commandLogger->register();
}, $this->commandLoggers);
}

public function unregister(): void
{
array_map(static function (CommandLoggerInterface $commandLogger) {
array_map(static function (CommandLoggerInterface $commandLogger): void {
$commandLogger->unregister();
}, $this->commandLoggers);
}
Expand Down
3 changes: 1 addition & 2 deletions Command/DoctrineODMCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ public function __construct(private ManagerRegistry $registry)
parent::__construct();
}

/** @param string $dmName */
public static function setApplicationDocumentManager(Application $application, $dmName): void
public static function setApplicationDocumentManager(Application $application, string $dmName): void
{
$dm = $application->getKernel()->getContainer()->get('doctrine_mongodb')->getManager($dmName);
$helperSet = $application->getHelperSet();
Expand Down
2 changes: 1 addition & 1 deletion Command/LoadDataFixturesDoctrineODMCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int

$purger = new MongoDBPurger($dm);
$executor = new MongoDBExecutor($dm, $purger);
$executor->setLogger(static function ($message) use ($output) {
$executor->setLogger(static function ($message) use ($output): void {
$output->writeln(sprintf(' <comment>></comment> <info>%s</info>', $message));
});
$executor->execute($fixtures, $input->getOption('append'));
Expand Down
18 changes: 5 additions & 13 deletions DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ final class DoctrineMongoDBMappingsPass extends RegisterMappingsPass
* executes if this parameter exists in the service container.
* @param string[] $aliasMap Map of alias to namespace.
*/
public function __construct($driver, array $namespaces, array $managerParameters, $enabledParameter = false, array $aliasMap = [])
public function __construct(Definition|Reference $driver, array $namespaces, array $managerParameters, string|false $enabledParameter = false, array $aliasMap = [])
{
$managerParameters[] = 'doctrine_mongodb.odm.default_document_manager';

Expand All @@ -58,10 +58,8 @@ public function __construct($driver, array $namespaces, array $managerParameters
* enable the mapping. Set to false to not do any check,
* optional.
* @param string[] $aliasMap Map of alias to namespace.
*
* @return DoctrineMongoDBMappingsPass
*/
public static function createXmlMappingDriver(array $mappings, array $managerParameters, $enabledParameter = false, array $aliasMap = [])
public static function createXmlMappingDriver(array $mappings, array $managerParameters, string|false $enabledParameter = false, array $aliasMap = []): DoctrineMongoDBMappingsPass
{
$arguments = [$mappings, '.mongodb.xml'];
$locator = new Definition(SymfonyFileLocator::class, $arguments);
Expand All @@ -80,10 +78,8 @@ public static function createXmlMappingDriver(array $mappings, array $managerPar
* enable the mapping. Set to false to not do any check,
* optional.
* @param string[] $aliasMap Map of alias to namespace.
*
* @return DoctrineMongoDBMappingsPass
*/
public static function createPhpMappingDriver(array $mappings, array $managerParameters = [], $enabledParameter = false, array $aliasMap = [])
public static function createPhpMappingDriver(array $mappings, array $managerParameters = [], string|false $enabledParameter = false, array $aliasMap = []): DoctrineMongoDBMappingsPass
{
$arguments = [$mappings, '.php'];
$locator = new Definition(SymfonyFileLocator::class, $arguments);
Expand All @@ -103,10 +99,8 @@ public static function createPhpMappingDriver(array $mappings, array $managerPar
* enable the mapping. Set to false to not do any check,
* optional.
* @param string[] $aliasMap Map of alias to namespace.
*
* @return DoctrineMongoDBMappingsPass
*/
public static function createAttributeMappingDriver(array $namespaces, array $directories, array $managerParameters, $enabledParameter = false, array $aliasMap = [])
public static function createAttributeMappingDriver(array $namespaces, array $directories, array $managerParameters, string|false $enabledParameter = false, array $aliasMap = []): DoctrineMongoDBMappingsPass
{
$driver = new Definition(AttributeDriver::class, [$directories]);

Expand All @@ -124,10 +118,8 @@ public static function createAttributeMappingDriver(array $namespaces, array $di
* enable the mapping. Set to false to not do any check,
* optional.
* @param string[] $aliasMap Map of alias to namespace.
*
* @return DoctrineMongoDBMappingsPass
*/
public static function createStaticPhpMappingDriver(array $namespaces, array $directories, array $managerParameters = [], $enabledParameter = false, array $aliasMap = [])
public static function createStaticPhpMappingDriver(array $namespaces, array $directories, array $managerParameters = [], string|false $enabledParameter = false, array $aliasMap = []): DoctrineMongoDBMappingsPass
{
$driver = new Definition(StaticPHPDriver::class, [$directories]);

Expand Down
28 changes: 12 additions & 16 deletions DependencyInjection/DoctrineMongoDBExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,13 @@
use Symfony\Component\Messenger\MessageBusInterface;
use Throwable;

use function array_keys;
use function array_key_first;
use function array_merge;
use function class_exists;
use function class_implements;
use function in_array;
use function interface_exists;
use function is_dir;
use function reset;
use function sprintf;

/**
Expand All @@ -71,15 +70,13 @@ public function load(array $configs, ContainerBuilder $container): void
$loader->load('mongodb.xml');

if (empty($config['default_connection'])) {
$keys = array_keys($config['connections']);
$config['default_connection'] = reset($keys);
$config['default_connection'] = array_key_first($config['connections']);
}

$container->setParameter('doctrine_mongodb.odm.default_connection', $config['default_connection']);

if (empty($config['default_document_manager'])) {
$keys = array_keys($config['document_managers']);
$config['default_document_manager'] = reset($keys);
$config['default_document_manager'] = array_key_first($config['document_managers']);
}

$container->setParameter('doctrine_mongodb.odm.default_document_manager', $config['default_document_manager']);
Expand Down Expand Up @@ -156,7 +153,7 @@ public function load(array $configs, ContainerBuilder $container): void
*
* @return array<string, mixed>
*/
protected function overrideParameters($options, ContainerBuilder $container)
protected function overrideParameters(array $options, ContainerBuilder $container): array
{
$overrides = [
'proxy_namespace',
Expand Down Expand Up @@ -189,11 +186,11 @@ protected function overrideParameters($options, ContainerBuilder $container)
* Loads the document managers configuration.
*
* @param array $dmConfigs An array of document manager configs
* @param string $defaultDM The default document manager name
* @param string|null $defaultDM The default document manager name
* @param string $defaultDB The default db name
* @param ContainerBuilder $container A ContainerBuilder instance
*/
protected function loadDocumentManagers(array $dmConfigs, $defaultDM, $defaultDB, ContainerBuilder $container)
protected function loadDocumentManagers(array $dmConfigs, string|null $defaultDM, string $defaultDB, ContainerBuilder $container): void
{
$dms = [];
foreach ($dmConfigs as $name => $documentManager) {
Expand All @@ -214,11 +211,11 @@ protected function loadDocumentManagers(array $dmConfigs, $defaultDM, $defaultDB
* Loads a document manager configuration.
*
* @param array $documentManager A document manager configuration array
* @param string $defaultDM The default document manager name
* @param string|null $defaultDM The default document manager name
* @param string $defaultDB The default db name
* @param ContainerBuilder $container A ContainerBuilder instance
*/
protected function loadDocumentManager(array $documentManager, $defaultDM, $defaultDB, ContainerBuilder $container)
protected function loadDocumentManager(array $documentManager, string|null $defaultDM, string $defaultDB, ContainerBuilder $container): void
{
$connectionName = $documentManager['connection'] ?? $documentManager['name'];
$configurationId = sprintf('doctrine_mongodb.odm.%s_configuration', $documentManager['name']);
Expand Down Expand Up @@ -351,7 +348,7 @@ protected function loadDocumentManager(array $documentManager, $defaultDM, $defa
* @param array $config An array of connections configurations
* @param ContainerBuilder $container A ContainerBuilder instance
*/
protected function loadConnections(array $connections, ContainerBuilder $container)
protected function loadConnections(array $connections, ContainerBuilder $container): void
{
$cons = [];
foreach ($connections as $name => $connection) {
Expand Down Expand Up @@ -488,7 +485,7 @@ private function normalizeDriverOptions(array $connection): array
* In the case of bundles everything is really optional (which leads to autodetection for this bundle) but
* in the mappings key everything except alias is a required argument.
*/
protected function loadDocumentManagerBundlesMappingInformation(array $documentManager, Definition $odmConfigDef, ContainerBuilder $container)
protected function loadDocumentManagerBundlesMappingInformation(array $documentManager, Definition $odmConfigDef, ContainerBuilder $container): void
{
// reset state of drivers and alias map. They are only used by this methods and children.
$this->drivers = [];
Expand Down Expand Up @@ -553,13 +550,12 @@ public function getAlias(): string
*
* @return string The XML namespace
*/
public function getNamespace()
public function getNamespace(): string
{
return 'http://symfony.com/schema/dic/doctrine/odm/mongodb';
}

/** @return string */
public function getXsdValidationBasePath()
public function getXsdValidationBasePath(): string
{
return __DIR__ . '/../Resources/config/schema';
}
Expand Down
9 changes: 3 additions & 6 deletions DoctrineMongoDBBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ class DoctrineMongoDBBundle extends Bundle
/** @var callable|null */
private $autoloader;

/** @return void */
public function build(ContainerBuilder $container)
public function build(ContainerBuilder $container): void
{
$container->addCompilerPass(new CacheCompatibilityPass());
$container->addCompilerPass(new RegisterEventListenersAndSubscribersPass('doctrine_mongodb.odm.connections', 'doctrine_mongodb.odm.%s_connection.event_manager', 'doctrine_mongodb.odm'), PassConfig::TYPE_BEFORE_OPTIMIZATION);
Expand Down Expand Up @@ -62,8 +61,7 @@ public function getContainerExtension(): ?ExtensionInterface
return new DoctrineMongoDBExtension();
}

/** @return void */
public function boot()
public function boot(): void
{
$registry = $this->container->get('doctrine_mongodb');
assert($registry instanceof ManagerRegistry);
Expand Down Expand Up @@ -106,8 +104,7 @@ private function unregisterCommandLoggers(): void
$commandLoggerRegistry->unregister();
}

/** @return void */
public function shutdown()
public function shutdown(): void
{
$this->unregisterAutoloader();
$this->unregisterCommandLoggers();
Expand Down
2 changes: 1 addition & 1 deletion Fixture/FixtureGroupInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ interface FixtureGroupInterface
*
* @return string[]
*/
public static function getGroups();
public static function getGroups(): array;
}
11 changes: 1 addition & 10 deletions Form/ChoiceList/MongoDBQueryBuilderLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,9 @@ class MongoDBQueryBuilderLoader implements EntityLoaderInterface

/**
* Construct an ORM Query Builder Loader
*
* @param Builder|Closure $queryBuilder
* @param string $class
*/
public function __construct($queryBuilder, ?ObjectManager $manager = null, $class = null)
public function __construct(Builder|Closure $queryBuilder, ?ObjectManager $manager = null, ?string $class = null)
{
// If a query builder was passed, it must be a closure or QueryBuilder
// instance
if (! ($queryBuilder instanceof Builder || $queryBuilder instanceof Closure)) {
throw new UnexpectedTypeException($queryBuilder, Builder::class . ' or ' . Closure::class);
}

if ($queryBuilder instanceof Closure) {
$queryBuilder = $queryBuilder($manager->getRepository($class));

Expand Down
6 changes: 1 addition & 5 deletions Form/DoctrineMongoDBExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,8 @@
*/
class DoctrineMongoDBExtension extends AbstractExtension
{
/** @var ManagerRegistry */
protected $registry;

public function __construct(ManagerRegistry $registry)
public function __construct(private ManagerRegistry $registry)
{
$this->registry = $registry;
}

/** @return FormTypeInterface[] */
Expand Down
14 changes: 3 additions & 11 deletions Form/DoctrineMongoDBTypeGuesser.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,11 @@
*/
class DoctrineMongoDBTypeGuesser implements FormTypeGuesserInterface
{
/** @var ManagerRegistry */
protected $registry;

/** @var array<class-string, array{ClassMetadata, string}|null> */
private array $cache = [];

public function __construct(ManagerRegistry $registry)
public function __construct(private ManagerRegistry $registry)
{
$this->registry = $registry;
}

public function guessType(string $class, string $property): ?TypeGuess
Expand Down Expand Up @@ -165,12 +161,8 @@ public function guessPattern(string $class, string $property): ?ValueGuess
return null;
}

/**
* @param string $class
*
* @return array{ClassMetadata, string}|null
*/
protected function getMetadata($class)
/** @return array{ClassMetadata, string}|null */
protected function getMetadata(string $class): ?array
{
if (array_key_exists($class, $this->cache)) {
return $this->cache[$class];
Expand Down
8 changes: 2 additions & 6 deletions Form/Type/DocumentType.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,9 @@ public function configureOptions(OptionsResolver $resolver): void
$resolver->setAllowedTypes('document_manager', ['null', 'string', DocumentManager::class]);
}

/**
* @internal Symfony 2.8 compatibility
*
* @return string
*/
/** @internal Symfony 2.8 compatibility */
#[ReturnTypeWillChange]
public function getBlockPrefix()
public function getBlockPrefix(): string
{
return 'document';
}
Expand Down
9 changes: 4 additions & 5 deletions Loader/SymfonyFixturesLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,9 @@ public function addFixture(FixtureInterface $fixture): void
* Overridden to not allow new fixture classes to be instantiated.
*
* @param string $class

Check failure on line 69 in Loader/SymfonyFixturesLoader.php

View workflow job for this annotation

GitHub Actions / Coding Standards / Coding Standards (8.2)

Incorrect annotations group.
*
* @return FixtureInterface
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingAnyTypeHint
*/
protected function createFixture($class)
protected function createFixture($class): FixtureInterface

Check failure on line 72 in Loader/SymfonyFixturesLoader.php

View workflow job for this annotation

GitHub Actions / Coding Standards / Coding Standards (8.2)

Method \Doctrine\Bundle\MongoDBBundle\Loader\SymfonyFixturesLoader::createFixture() does not have native type hint for its parameter $class but it should be possible to add it based on @param annotation "string".

Check failure on line 72 in Loader/SymfonyFixturesLoader.php

View workflow job for this annotation

GitHub Actions / Coding Standards / Coding Standards (8.2)

Useless @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingAnyTypeHint
{
/*
* We don't actually need to create the fixture. We just
Expand All @@ -95,7 +94,7 @@ protected function createFixture($class)
*
* @return FixtureInterface[]
*/
public function getFixtures(array $groups = [])
public function getFixtures(array $groups = []): array
{
$fixtures = parent::getFixtures();

Expand Down Expand Up @@ -135,7 +134,7 @@ private function addGroupsFixtureMapping(string $className, array $groups): void
}

/** @param array<class-string<FixtureInterface>, FixtureInterface> $fixtures An array of fixtures with class names as keys */
private function validateDependencies(array $fixtures, FixtureInterface $fixture)
private function validateDependencies(array $fixtures, FixtureInterface $fixture): void
{
if (! $fixture instanceof DependentFixtureInterface) {
return;
Expand Down
8 changes: 3 additions & 5 deletions Loader/SymfonyFixturesLoaderInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,12 @@ interface SymfonyFixturesLoaderInterface
*
* @param list<array{fixture: FixtureInterface, groups: string[]}> $fixtures
*/
public function addFixtures(array $fixtures);
public function addFixtures(array $fixtures): void;

/**
* Add a single fixture
*
* @return mixed
*/
public function addFixture(FixtureInterface $fixture);
public function addFixture(FixtureInterface $fixture): void;

/**
* Returns the array of data fixtures to execute.
Expand All @@ -31,5 +29,5 @@ public function addFixture(FixtureInterface $fixture);
*
* @return FixtureInterface[]
*/
public function getFixtures(array $groups = []);
public function getFixtures(array $groups = []): array;
}
4 changes: 1 addition & 3 deletions ManagerConfigurator.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ public function __construct(private array $enabledFilters = [])

/**
* Create a connection by name.
*
* @return void
*/
public function configure(DocumentManager $documentManager)
public function configure(DocumentManager $documentManager): void
{
$this->enableFilters($documentManager);
}
Expand Down
Loading

0 comments on commit 97f2648

Please sign in to comment.