Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add native types #812

Merged
merged 1 commit into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@
parent::__construct();
}

/** @param string $dmName */
public static function setApplicationDocumentManager(Application $application, $dmName): void
public static function setApplicationDocumentManager(Application $application, string $dmName): void

Check warning on line 24 in Command/DoctrineODMCommand.php

View check run for this annotation

Codecov / codecov/patch

Command/DoctrineODMCommand.php#L24

Added line #L24 was not covered by tests
{
$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 @@
* 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 = [])

Check warning on line 35 in DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php

View check run for this annotation

Codecov / codecov/patch

DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php#L35

Added line #L35 was not covered by tests
{
$managerParameters[] = 'doctrine_mongodb.odm.default_document_manager';

Expand All @@ -58,10 +58,8 @@
* 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

Check warning on line 62 in DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php

View check run for this annotation

Codecov / codecov/patch

DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php#L62

Added line #L62 was not covered by tests
{
$arguments = [$mappings, '.mongodb.xml'];
$locator = new Definition(SymfonyFileLocator::class, $arguments);
Expand All @@ -80,10 +78,8 @@
* 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

Check warning on line 82 in DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php

View check run for this annotation

Codecov / codecov/patch

DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php#L82

Added line #L82 was not covered by tests
{
$arguments = [$mappings, '.php'];
$locator = new Definition(SymfonyFileLocator::class, $arguments);
Expand All @@ -103,10 +99,8 @@
* 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

Check warning on line 103 in DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php

View check run for this annotation

Codecov / codecov/patch

DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php#L103

Added line #L103 was not covered by tests
{
$driver = new Definition(AttributeDriver::class, [$directories]);

Expand All @@ -124,10 +118,8 @@
* 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

Check warning on line 122 in DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php

View check run for this annotation

Codecov / codecov/patch

DependencyInjection/Compiler/DoctrineMongoDBMappingsPass.php#L122

Added line #L122 was not covered by tests
{
$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 */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like something that can be removed.

#[ReturnTypeWillChange]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the return type have been modified, this attribute is no longer necessary.

public function getBlockPrefix()
public function getBlockPrefix(): string
{
return 'document';
}
Expand Down
10 changes: 4 additions & 6 deletions Loader/SymfonyFixturesLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,9 @@ public function addFixture(FixtureInterface $fixture): void
/**
* Overridden to not allow new fixture classes to be instantiated.
*
* @param string $class
*
* @return FixtureInterface
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingAnyTypeHint
Copy link
Member

@GromNaN GromNaN Dec 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope this will be fixed with doctrine/data-fixtures#455

*/
protected function createFixture($class)
protected function createFixture($class): FixtureInterface
{
/*
* We don't actually need to create the fixture. We just
Expand All @@ -95,7 +93,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 +133,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