From 7d70543bed96036abf1679aa11132ea034b44d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Fr=C3=B6mer?= Date: Wed, 22 Dec 2021 10:35:02 +0100 Subject: [PATCH 1/5] Add conflict to doctrine/persistence below 1.4 and use correct persistence classes --- CHANGELOG.md | 4 +++- composer.json | 9 ++++++--- src/Faker/ORM/Doctrine/ColumnTypeGuesser.php | 2 +- src/Faker/ORM/Doctrine/EntityPopulator.php | 4 ++-- src/Faker/ORM/Doctrine/Populator.php | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 399be4ab3b..b0143728c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # CHANGELOG ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.18.0..main) +- Fixed usage of `Doctrine\Persistence` dependency +- Added conflict with `doctrine/persistence` below version `1.4` ## [2022-01-23, v1.18.0](https://github.com/FakerPHP/Faker/compare/v1.17.0..v1.18.0) @@ -13,7 +15,7 @@ - Person->name was missing string return type (#424) - Generate a valid BE TAX number (#415) - Added the UUID extension to Core (#427) -- + ## [2021-12-05, v1.17.0](https://github.com/FakerPHP/Faker/compare/v1.16.0..v1.17.0) - Partial PHP 8.1 compatibility (#373) diff --git a/composer.json b/composer.json index 8157935b41..d9a66d2d31 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,8 @@ "require-dev": { "ext-intl": "*", "bamarni/composer-bin-plugin": "^1.4.1", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "symfony/phpunit-bridge": "^4.4 || ^5.2", + "doctrine/persistence": "^1.4 || ^2.0 || ^3.0" }, "autoload": { "psr-4": { @@ -35,13 +36,15 @@ } }, "conflict": { - "fzaninotto/faker": "*" + "fzaninotto/faker": "*", + "doctrine/persistence": "<1.4" }, "suggest": { "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "ext-mbstring": "Required for multibyte Unicode string functionality.", + "doctrine/persistence": "Required to use Faker\\ORM\\Doctrine" }, "config": { "allow-plugins": { diff --git a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php index 0672d1d7d3..a672e2ec71 100644 --- a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php +++ b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php @@ -2,7 +2,7 @@ namespace Faker\ORM\Doctrine; -use Doctrine\Common\Persistence\Mapping\ClassMetadata; +use Doctrine\Persistence\Mapping\ClassMetadata; use Faker\Generator; class ColumnTypeGuesser diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 145f09655c..1b3072a1b1 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -2,8 +2,8 @@ namespace Faker\ORM\Doctrine; -use Doctrine\Common\Persistence\Mapping\ClassMetadata; -use Doctrine\Common\Persistence\ObjectManager; +use Doctrine\Persistence\Mapping\ClassMetadata; +use Doctrine\Persistence\ObjectManager; /** * Service class for populating a table through a Doctrine Entity class. diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php index d75400feb1..877f738a93 100644 --- a/src/Faker/ORM/Doctrine/Populator.php +++ b/src/Faker/ORM/Doctrine/Populator.php @@ -2,7 +2,7 @@ namespace Faker\ORM\Doctrine; -use Doctrine\Common\Persistence\ObjectManager; +use Doctrine\Persistence\ObjectManager; use Faker\Generator; /** From 3dc8f2365b38c6471c7855c7fd7467354f0b2680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Fr=C3=B6mer?= Date: Wed, 22 Dec 2021 11:11:35 +0100 Subject: [PATCH 2/5] Resolve more issue with static analysis in doctrine implementations. Add doctrine/orm as dev dependency to avoid baseline entries. --- composer.json | 6 +- phpstan-baseline.neon | 183 +------------------ src/Faker/ORM/Doctrine/ColumnTypeGuesser.php | 4 +- src/Faker/ORM/Doctrine/EntityPopulator.php | 14 +- src/Faker/ORM/Doctrine/Populator.php | 2 +- 5 files changed, 22 insertions(+), 187 deletions(-) diff --git a/composer.json b/composer.json index d9a66d2d31..cc3eba1a8c 100644 --- a/composer.json +++ b/composer.json @@ -21,8 +21,8 @@ "require-dev": { "ext-intl": "*", "bamarni/composer-bin-plugin": "^1.4.1", - "symfony/phpunit-bridge": "^4.4 || ^5.2", - "doctrine/persistence": "^1.4 || ^2.0 || ^3.0" + "doctrine/orm": "^2.10", + "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "autoload": { "psr-4": { @@ -44,7 +44,7 @@ "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", "ext-mbstring": "Required for multibyte Unicode string functionality.", - "doctrine/persistence": "Required to use Faker\\ORM\\Doctrine" + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine" }, "config": { "allow-plugins": { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 5a50df6733..af064e3d66 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,7 +1,7 @@ parameters: ignoreErrors: - - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Calculator/Iban.php @@ -65,123 +65,23 @@ parameters: count: 1 path: src/Faker/ORM/CakePHP/Populator.php - - - message: "#^Access to property \\$fieldMappings on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 2 - path: src/Faker/ORM/Doctrine/ColumnTypeGuesser.php - - - - message: "#^Call to method getTypeOfField\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/ColumnTypeGuesser.php - - - - message: "#^Parameter \\$class of method Faker\\\\ORM\\\\Doctrine\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid typehint type Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/ColumnTypeGuesser.php - - message: "#^Access to constant ONE on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - message: "#^Access to constant ONE_TO_ONE on an unknown class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - message: "#^Access to constant REFERENCE_ONE on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - message: "#^Access to property \\$associationMappings on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - message: "#^Access to property \\$associationMappings on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php - - message: "#^Access to property \\$fieldMappings on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Access to property \\$reflFields on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 2 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method createQueryBuilder\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectRepository\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getAssociationMappings\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getAssociationMappings\\(\\) on an unknown class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getAssociationNames\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getAssociationTargetClass\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getFieldNames\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getIdentifier\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getName\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getRepository\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method hasField\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method isCollectionValuedAssociation\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method isIdentifier\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method newInstance\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method persist\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:createQueryBuilder\\(\\)\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php @@ -190,71 +90,6 @@ parameters: count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - message: "#^Class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata not found\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Method Faker\\\\ORM\\\\Doctrine\\\\EntityPopulator\\:\\:generateId\\(\\) never returns null so it can be removed from the return typehint\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^PHPDoc tag @var for variable \\$repository contains unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectRepository\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Parameter \\$class of method Faker\\\\ORM\\\\Doctrine\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid typehint type Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Parameter \\$manager of method Faker\\\\ORM\\\\Doctrine\\\\EntityPopulator\\:\\:execute\\(\\) has invalid typehint type Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Parameter \\$manager of method Faker\\\\ORM\\\\Doctrine\\\\EntityPopulator\\:\\:generateId\\(\\) has invalid typehint type Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Property Faker\\\\ORM\\\\Doctrine\\\\EntityPopulator\\:\\:\\$class has unknown class Doctrine\\\\Common\\\\Persistence\\\\Mapping\\\\ClassMetadata as its type\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method flush\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" - count: 2 - path: src/Faker/ORM/Doctrine/Populator.php - - - - message: "#^Call to method flush\\(\\) on an unknown class Faker\\\\ORM\\\\Doctrine\\\\EntityManager\\.$#" - count: 2 - path: src/Faker/ORM/Doctrine/Populator.php - - - - message: "#^Call to method getClassMetadata\\(\\) on an unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/Populator.php - - - - message: "#^Parameter \\$entityManager of method Faker\\\\ORM\\\\Doctrine\\\\Populator\\:\\:execute\\(\\) has invalid typehint type Faker\\\\ORM\\\\Doctrine\\\\EntityManager\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/Populator.php - - - - message: "#^Parameter \\$manager of method Faker\\\\ORM\\\\Doctrine\\\\Populator\\:\\:__construct\\(\\) has invalid typehint type Doctrine\\\\Common\\\\Persistence\\\\ObjectManager\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/Populator.php - - - - message: "#^Property Faker\\\\ORM\\\\Doctrine\\\\Populator\\:\\:\\$manager has unknown class Doctrine\\\\Common\\\\Persistence\\\\ObjectManager as its type\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/Populator.php - - message: "#^Call to method create\\(\\) on an unknown class Mandango\\\\Mandango\\.$#" count: 1 @@ -765,7 +600,7 @@ parameters: path: src/Faker/Provider/Base.php - - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/Base.php @@ -795,12 +630,12 @@ parameters: path: src/Faker/Provider/File.php - - message: "#^Parameter \\#1 \\$str of function md5 expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function md5 expects string, int given\\.$#" count: 1 path: src/Faker/Provider/Miscellaneous.php - - message: "#^Parameter \\#1 \\$str of function sha1 expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function sha1 expects string, int given\\.$#" count: 1 path: src/Faker/Provider/Miscellaneous.php @@ -835,7 +670,7 @@ parameters: path: src/Faker/Provider/cs_CZ/Person.php - - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/en_ZA/Person.php @@ -910,7 +745,7 @@ parameters: path: src/Faker/Provider/ro_RO/Person.php - - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/ru_RU/Company.php @@ -920,7 +755,7 @@ parameters: path: src/Faker/Provider/sl_SI/Person.php - - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/zh_CN/Address.php @@ -930,7 +765,7 @@ parameters: path: src/Faker/Provider/zh_CN/Address.php - - message: "#^Parameter \\#1 \\$autoload_function of function spl_autoload_register expects callable\\(string\\)\\: void, Closure\\(mixed\\)\\: bool given\\.$#" + message: "#^Parameter \\#1 \\$callback of function spl_autoload_register expects \\(callable\\(string\\)\\: void\\)\\|null, Closure\\(mixed\\)\\: bool given\\.$#" count: 1 path: src/autoload.php diff --git a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php index a672e2ec71..b5249a1cd4 100644 --- a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php +++ b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php @@ -2,7 +2,7 @@ namespace Faker\ORM\Doctrine; -use Doctrine\Persistence\Mapping\ClassMetadata; +use Doctrine\ORM\Mapping\ClassMetadataInfo; use Faker\Generator; class ColumnTypeGuesser @@ -17,7 +17,7 @@ public function __construct(Generator $generator) /** * @return \Closure|null */ - public function guessFormat($fieldName, ClassMetadata $class) + public function guessFormat($fieldName, ClassMetadataInfo $class) { $generator = $this->generator; $type = $class->getTypeOfField($fieldName); diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 1b3072a1b1..91ba9ba52d 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -2,7 +2,7 @@ namespace Faker\ORM\Doctrine; -use Doctrine\Persistence\Mapping\ClassMetadata; +use Doctrine\ORM\Mapping\ClassMetadataInfo; use Doctrine\Persistence\ObjectManager; /** @@ -11,7 +11,7 @@ class EntityPopulator { /** - * @var ClassMetadata + * @var ClassMetadataInfo */ protected $class; /** @@ -23,7 +23,10 @@ class EntityPopulator */ protected $modifiers = []; - public function __construct(ClassMetadata $class) + /** + * @param ClassMetadataInfo $class + */ + public function __construct(ClassMetadataInfo $class) { $this->class = $class; } @@ -226,11 +229,10 @@ private function callMethods($obj, $insertedEntities) } /** - * @return int|null + * @return int */ private function generateId($obj, $column, ObjectManager $manager) { - /** @var \Doctrine\Common\Persistence\ObjectRepository $repository */ $repository = $manager->getRepository(get_class($obj)); $result = $repository->createQueryBuilder('e') ->select(sprintf('e.%s', $column)) @@ -238,8 +240,6 @@ private function generateId($obj, $column, ObjectManager $manager) ->execute(); $ids = array_map('current', $result->toArray()); - $id = null; - do { $id = mt_rand(); } while (in_array($id, $ids, false)); diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php index 877f738a93..67cd25449e 100644 --- a/src/Faker/ORM/Doctrine/Populator.php +++ b/src/Faker/ORM/Doctrine/Populator.php @@ -86,7 +86,7 @@ public function addEntity($entity, $number, $customColumnFormatters = [], $custo * Please note that large amounts of data will result in more memory usage since the the Populator will return * all newly created primary keys after executing. * - * @param EntityManager|null $entityManager A Doctrine connection object + * @param ObjectManager|null $entityManager A Doctrine connection object * * @return array A list of the inserted PKs */ From b5cc770f165f4cd9f1f14667c2c59344544320be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Fr=C3=B6mer?= Date: Wed, 22 Dec 2021 11:18:56 +0100 Subject: [PATCH 3/5] Fix phpstan-baseline for php7.4 --- phpstan-baseline.neon | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index af064e3d66..bd6743041a 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,7 +1,7 @@ parameters: ignoreErrors: - - message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Calculator/Iban.php @@ -600,7 +600,7 @@ parameters: path: src/Faker/Provider/Base.php - - message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/Base.php @@ -630,12 +630,12 @@ parameters: path: src/Faker/Provider/File.php - - message: "#^Parameter \\#1 \\$string of function md5 expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$str of function md5 expects string, int given\\.$#" count: 1 path: src/Faker/Provider/Miscellaneous.php - - message: "#^Parameter \\#1 \\$string of function sha1 expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$str of function sha1 expects string, int given\\.$#" count: 1 path: src/Faker/Provider/Miscellaneous.php @@ -670,7 +670,7 @@ parameters: path: src/Faker/Provider/cs_CZ/Person.php - - message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/en_ZA/Person.php @@ -745,7 +745,7 @@ parameters: path: src/Faker/Provider/ro_RO/Person.php - - message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/ru_RU/Company.php @@ -755,7 +755,7 @@ parameters: path: src/Faker/Provider/sl_SI/Person.php - - message: "#^Parameter \\#1 \\$string of function str_pad expects string, int given\\.$#" + message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/zh_CN/Address.php @@ -765,7 +765,7 @@ parameters: path: src/Faker/Provider/zh_CN/Address.php - - message: "#^Parameter \\#1 \\$callback of function spl_autoload_register expects \\(callable\\(string\\)\\: void\\)\\|null, Closure\\(mixed\\)\\: bool given\\.$#" + message: "#^Parameter \\#1 \\$autoload_function of function spl_autoload_register expects callable\\(string\\)\\: void, Closure\\(mixed\\)\\: bool given\\.$#" count: 1 path: src/autoload.php From a9ddfcc6d51db387173c37677bd0cf4e47cf7372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Fr=C3=B6mer?= Date: Wed, 5 Jan 2022 21:33:14 +0100 Subject: [PATCH 4/5] Add backwards compatible class_alias for doctrine/persistence --- composer.json | 13 ++++--- phpstan-baseline.neon | 35 +++++++++++++++++++ src/Faker/ORM/Doctrine/ColumnTypeGuesser.php | 4 +-- src/Faker/ORM/Doctrine/EntityPopulator.php | 11 +++--- src/Faker/ORM/Doctrine/Populator.php | 2 +- .../ORM/Doctrine/backward-compatibility.php | 11 ++++++ vendor-bin/phpstan/composer.json | 5 ++- vendor-bin/psalm/composer.json | 5 ++- 8 files changed, 69 insertions(+), 17 deletions(-) create mode 100644 src/Faker/ORM/Doctrine/backward-compatibility.php diff --git a/composer.json b/composer.json index cc3eba1a8c..3de6aa55ce 100644 --- a/composer.json +++ b/composer.json @@ -21,13 +21,16 @@ "require-dev": { "ext-intl": "*", "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/orm": "^2.10", + "doctrine/persistence": "^1.3 || ^2.0", "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" - } + }, + "files": [ + "src/Faker/ORM/Doctrine/backward-compatibility.php" + ] }, "autoload-dev": { "psr-4": { @@ -36,8 +39,7 @@ } }, "conflict": { - "fzaninotto/faker": "*", - "doctrine/persistence": "<1.4" + "fzaninotto/faker": "*" }, "suggest": { "ext-curl": "Required by Faker\\Provider\\Image to download images.", @@ -48,7 +50,8 @@ }, "config": { "allow-plugins": { - "bamarni/composer-bin-plugin": true + "bamarni/composer-bin-plugin": true, + "composer/package-versions-deprecated": true }, "sort-packages": true }, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index bd6743041a..f445f869e6 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -65,11 +65,31 @@ parameters: count: 1 path: src/Faker/ORM/CakePHP/Populator.php + - + message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$fieldMappings\\.$#" + count: 2 + path: src/Faker/ORM/Doctrine/ColumnTypeGuesser.php + + - + message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$fieldMappings\\.$#" + count: 1 + path: src/Faker/ORM/Doctrine/EntityPopulator.php + + - + message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$reflFields\\.$#" + count: 2 + path: src/Faker/ORM/Doctrine/EntityPopulator.php + - message: "#^Access to constant ONE on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php + - + message: "#^Access to constant ONE_TO_ONE on an unknown class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\.$#" + count: 1 + path: src/Faker/ORM/Doctrine/EntityPopulator.php + - message: "#^Access to constant REFERENCE_ONE on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" count: 1 @@ -80,16 +100,31 @@ parameters: count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php + - + message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:newInstance\\(\\)\\.$#" + count: 1 + path: src/Faker/ORM/Doctrine/EntityPopulator.php + - message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:createQueryBuilder\\(\\)\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php + - + message: "#^Call to method getAssociationMappings\\(\\) on an unknown class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\.$#" + count: 1 + path: src/Faker/ORM/Doctrine/EntityPopulator.php + - message: "#^Class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata not found\\.$#" count: 1 path: src/Faker/ORM/Doctrine/EntityPopulator.php + - + message: "#^Class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata not found\\.$#" + count: 1 + path: src/Faker/ORM/Doctrine/EntityPopulator.php + - message: "#^Call to method create\\(\\) on an unknown class Mandango\\\\Mandango\\.$#" count: 1 diff --git a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php index b5249a1cd4..0672d1d7d3 100644 --- a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php +++ b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php @@ -2,7 +2,7 @@ namespace Faker\ORM\Doctrine; -use Doctrine\ORM\Mapping\ClassMetadataInfo; +use Doctrine\Common\Persistence\Mapping\ClassMetadata; use Faker\Generator; class ColumnTypeGuesser @@ -17,7 +17,7 @@ public function __construct(Generator $generator) /** * @return \Closure|null */ - public function guessFormat($fieldName, ClassMetadataInfo $class) + public function guessFormat($fieldName, ClassMetadata $class) { $generator = $this->generator; $type = $class->getTypeOfField($fieldName); diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 91ba9ba52d..8bd8bede66 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -2,8 +2,8 @@ namespace Faker\ORM\Doctrine; -use Doctrine\ORM\Mapping\ClassMetadataInfo; -use Doctrine\Persistence\ObjectManager; +use Doctrine\Common\Persistence\Mapping\ClassMetadata; +use Doctrine\Common\Persistence\ObjectManager; /** * Service class for populating a table through a Doctrine Entity class. @@ -11,7 +11,7 @@ class EntityPopulator { /** - * @var ClassMetadataInfo + * @var ClassMetadata */ protected $class; /** @@ -23,10 +23,7 @@ class EntityPopulator */ protected $modifiers = []; - /** - * @param ClassMetadataInfo $class - */ - public function __construct(ClassMetadataInfo $class) + public function __construct(ClassMetadata $class) { $this->class = $class; } diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php index 67cd25449e..a1284edac3 100644 --- a/src/Faker/ORM/Doctrine/Populator.php +++ b/src/Faker/ORM/Doctrine/Populator.php @@ -2,7 +2,7 @@ namespace Faker\ORM\Doctrine; -use Doctrine\Persistence\ObjectManager; +use Doctrine\Common\Persistence\ObjectManager; use Faker\Generator; /** diff --git a/src/Faker/ORM/Doctrine/backward-compatibility.php b/src/Faker/ORM/Doctrine/backward-compatibility.php new file mode 100644 index 0000000000..6f545f87b8 --- /dev/null +++ b/src/Faker/ORM/Doctrine/backward-compatibility.php @@ -0,0 +1,11 @@ + Date: Fri, 28 Jan 2022 08:15:08 +0100 Subject: [PATCH 5/5] Update psalm baseline --- psalm.baseline.xml | 61 +++++++++------------------------------------- 1 file changed, 12 insertions(+), 49 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 3fd3b88614..7d5b26835d 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -19,49 +19,26 @@ self self - + TableRegistry - - - ClassMetadata - - - - $this->class - $this->class + $this->class - $this->class->associationMappings - $this->class->fieldMappings - ClassMetadata - ObjectManager - ObjectManager \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ORM\Mapping\ClassMetadata \Doctrine\ORM\Mapping\ClassMetadata - - $this->class - $this->class - $this->class - $this->class - $this->class - $this->class->reflFields - ClassMetadata - - - - - - $this->manager - ObjectManager|null - + + createQueryBuilder + getAssociationMappings + newInstance + @@ -76,7 +53,9 @@ - + + \ColumnMap + @@ -88,6 +67,7 @@ $columnMap $columnMap $columnMap + \ColumnMap @@ -152,6 +132,7 @@ $this->locator + Locator Locator @@ -191,34 +172,16 @@ $checksumArr[$checksum % 11] - - - - Icelandic - - - - static::$middleName - $ref[$i] - static::split($text) - - - implode('', $result) - - - 14 - - DateTime