phpstan-doctrine
phpstan-doctrine copied to clipboard
Internal Error : The class ... was not found in the chain configured namespaces
Bug report
With lastest Phpstan version, on an up-to-date Symfony 6.2/PHP 8.1 project, I run: php -d memory_limit=-1 vendor/bin/phpstan analyse src --level=5 -v
It says me : Post the following stack trace to https://github.com/phpstan/phpstan/issues/new?template=Bug_report.md:
So this is the stacktrace:
Internal error: Internal error: The class 'App\Entity\Spip\AuteurLien' was not found in the chain configured namespaces App\Entity\Tud in file /var/www/src/Repository/Spip/AuteurLienRepository.php
Post the following stack trace to https://github.com/phpstan/phpstan/issues/new?template=Bug_report.md:
#0 /var/www/vendor/doctrine/persistence/src/Persistence/Mapping/Driver/MappingDriverChain.php(89): Doctrine\Persistence\Mapping\MappingException::classNotFoundInNamespaces('App\\Entity\\Spip...', Array)
phpstan/phpstan#1 /var/www/vendor/doctrine/doctrine-bundle/Mapping/MappingDriver.php(42): Doctrine\Persistence\Mapping\Driver\MappingDriverChain->loadMetadataForClass('App\\Entity\\Spip...',
Object(Doctrine\ORM\Mapping\ClassMetadata))
phpstan/phpstan#2 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(132): Doctrine\Bundle\DoctrineBundle\Mapping\MappingDriver->loadMetadataForClass('App\\Entity\\Spip...',
Object(Doctrine\ORM\Mapping\ClassMetadata))
phpstan/phpstan#3 /var/www/vendor/doctrine/doctrine-bundle/Mapping/ClassMetadataFactory.php(18): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array)
phpstan/phpstan#4 /var/www/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(343):
Doctrine\Bundle\DoctrineBundle\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array)
phpstan/phpstan#5 /var/www/vendor/doctrine/persistence/src/Persistence/Mapping/AbstractClassMetadataFactory.php(207): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('App\\Entity\\Spip...')
phpstan/phpstan#6 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('App\\Entity\\Spip...')
phpstan/phpstan#7 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1782): Doctrine\ORM\EntityManager->getClassMetadata('App\\Entity\\Spip...')
phpstan/phpstan#8 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1620): Doctrine\ORM\Query\Parser->RangeVariableDeclaration()
phpstan/phpstan#9 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1350): Doctrine\ORM\Query\Parser->IdentificationVariableDeclaration()
phpstan/phpstan#10 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(880): Doctrine\ORM\Query\Parser->FromClause()
phpstan/phpstan#11 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(849): Doctrine\ORM\Query\Parser->SelectStatement()
phpstan/phpstan#12 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(256): Doctrine\ORM\Query\Parser->QueryLanguage()
phpstan/phpstan#13 /var/www/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(356): Doctrine\ORM\Query\Parser->getAST()
phpstan/phpstan#14 /var/www/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/Query/QueryResultTypeWalker.php(119): Doctrine\ORM\Query\Parser->parse()
phpstan/phpstan#15 /var/www/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/QueryBuilder/QueryBuilderGetQueryDynamicReturnTypeExtension.php(164):
PHPStan\Type\Doctrine\Query\QueryResultTypeWalker::walk(Object(Doctrine\ORM\Query), Object(PHPStan\Type\Doctrine\Query\QueryResultTypeBuilder), Object(PHPStan\Type\Doctrine\DescriptorRegistry))
phpstan/phpstan#16 /var/www/vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/QueryBuilder/QueryBuilderGetQueryDynamicReturnTypeExtension.php(147):
PHPStan\Type\Doctrine\QueryBuilder\QueryBuilderGetQueryDynamicReturnTypeExtension->getQueryType('SELECT a FROM A...')
phpstan/phpstan#17 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(3344):
PHPStan\Type\Doctrine\QueryBuilder\QueryBuilderGetQueryDynamicReturnTypeExtension->getTypeFromMethodCall(Object(PHPStan\Reflection\ResolvedMethodReflection), Object(PhpParser\Node\Expr\MethodCall),
Object(PHPStan\Analyser\MutatingScope))
phpstan/phpstan#18 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1333):
PHPStan\Analyser\MutatingScope->methodCallReturnType(Object(PHPStan\Type\Doctrine\QueryBuilder\BranchingQueryBuilderType), 'getQuery', Object(PhpParser\Node\Expr\MethodCall))
phpstan/phpstan#19 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1339): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()
phpstan/phpstan#20 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(556): PHPStan\Analyser\MutatingScope->resolveType('$this->createQu...', Object(PhpParser\Node\Expr\MethodCall))
phpstan/phpstan#21 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1333): PHPStan\Analyser\MutatingScope->getType(Object(PhpParser\Node\Expr\MethodCall))
phpstan/phpstan#22 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(1339): PHPStan\Analyser\MutatingScope->PHPStan\Analyser\{closure}()
phpstan/phpstan#23 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/MutatingScope.php(556): PHPStan\Analyser\MutatingScope->resolveType('$this->createQu...', Object(PhpParser\Node\Expr\MethodCall))
phpstan/phpstan#24 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Rules/FunctionReturnTypeCheck.php(53): PHPStan\Analyser\MutatingScope->getType(Object(PhpParser\Node\Expr\MethodCall))
phpstan/phpstan#25 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Rules/Methods/ReturnTypeRule.php(43): PHPStan\Rules\FunctionReturnTypeCheck->checkReturnType(Object(PHPStan\Analyser\MutatingScope),
Object(PHPStan\Type\ArrayType), Object(PhpParser\Node\Expr\MethodCall), Object(PhpParser\Node\Stmt\Return_), 'Method App\\Repo...', 'Method App\\Repo...', 'Method App\\Repo...', 'Method App\\Repo...', false)
phpstan/phpstan#26 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(106): PHPStan\Rules\Methods\ReturnTypeRule->processNode(Object(PhpParser\Node\Stmt\Return_),
Object(PHPStan\Analyser\MutatingScope))
phpstan/phpstan#27 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Node/ClassStatementsGatherer.php(98): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}(Object(PhpParser\Node\Stmt\Return_),
Object(PHPStan\Analyser\MutatingScope))
phpstan/phpstan#28 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(508): PHPStan\Node\ClassStatementsGatherer->__invoke(Object(PhpParser\Node\Stmt\Return_),
Object(PHPStan\Analyser\MutatingScope))
phpstan/phpstan#29 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(417): PHPStan\Analyser\NodeScopeResolver::PHPStan\Analyser\{closure}(Object(PhpParser\Node\Stmt\Return_),
Object(PHPStan\Analyser\MutatingScope))
phpstan/phpstan#30 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(362): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Return_),
Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#31 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(523): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\ClassMethod), Array,
Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#32 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(362): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\ClassMethod),
Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#33 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(601): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\Class_), Array,
Object(PHPStan\Analyser\MutatingScope), Object(PHPStan\Node\ClassStatementsGatherer), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#34 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(362): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Class_),
Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#35 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(573): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\Namespace_), Array,
Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#36 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(331): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Namespace_),
Object(PHPStan\Analyser\MutatingScope), Object(Closure), Object(PHPStan\Analyser\StatementContext))
phpstan/phpstan#37 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(175): PHPStan\Analyser\NodeScopeResolver->processNodes(Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure))
phpstan/phpstan#38 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(130): PHPStan\Analyser\FileAnalyser->analyseFile('/var/www/src/Re...', Array, Object(PHPStan\Rules\LazyRegistry),
Object(PHPStan\Collectors\Registry), NULL)
phpstan/phpstan#39 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): PHPStan\Command\WorkerCommand->PHPStan\Command\{closure}(Array)
phpstan/phpstan#40 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/clue/ndjson-react/src/Decoder.php(110): _PHPStan_53d0d2174\Evenement\EventEmitter->emit('data', Array)
phpstan/phpstan#41 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97): _PHPStan_53d0d2174\Clue\React\NDJson\Decoder->handleData(Array)
phpstan/phpstan#42 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/Util.php(62): _PHPStan_53d0d2174\Evenement\EventEmitter->emit('data', Array)
phpstan/phpstan#43 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/evenement/evenement/src/Evenement/EventEmitterTrait.php(97):
_PHPStan_53d0d2174\React\Stream\Util::_PHPStan_53d0d2174\React\Stream\{closure}('{"action":"anal...')
phpstan/phpstan#44 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/stream/src/DuplexResourceStream.php(154): _PHPStan_53d0d2174\Evenement\EventEmitter->emit('data', Array)
phpstan/phpstan#45 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(201): _PHPStan_53d0d2174\React\Stream\DuplexResourceStream->handleData(Resource id phpstan/phpstan#3647)
phpstan/phpstan#46 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/react/event-loop/src/StreamSelectLoop.php(173): _PHPStan_53d0d2174\React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
phpstan/phpstan#47 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/src/Command/WorkerCommand.php(96): _PHPStan_53d0d2174\React\EventLoop\StreamSelectLoop->run()
phpstan/phpstan#48 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(259):
PHPStan\Command\WorkerCommand->execute(Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
phpstan/phpstan#49 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(870):
_PHPStan_53d0d2174\Symfony\Component\Console\Command\Command->run(Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
phpstan/phpstan#50 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(261): _PHPStan_53d0d2174\Symfony\Component\Console\Application->doRunCommand(Object(PHPStan\Command\WorkerCommand),
Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
phpstan/phpstan#51 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(157):
_PHPStan_53d0d2174\Symfony\Component\Console\Application->doRun(Object(_PHPStan_53d0d2174\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_53d0d2174\Symfony\Component\Console\Output\ConsoleOutput))
phpstan/phpstan#52 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(124): _PHPStan_53d0d2174\Symfony\Component\Console\Application->run()
phpstan/phpstan#53 phar:///var/www/vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(125): _PHPStan_53d0d2174\{closure}()
phpstan/phpstan#54 /var/www/vendor/phpstan/phpstan/phpstan(8): require('phar:///var/www...')
phpstan/phpstan#55 /var/www/vendor/bin/phpstan(120): include('/var/www/vendor...')
phpstan/phpstan#56 {main}
My doctrine conf:
orm:
auto_generate_proxy_classes: true
default_entity_manager: default
entity_managers:
default:
connection: tud
mappings:
Tud:
is_bundle: false
dir: '%kernel.project_dir%/src/Entity/Tud'
prefix: 'App\Entity\Tud'
alias: Tud
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
spip:
connection: spip
mappings:
Spip:
is_bundle: false
dir: '%kernel.project_dir%/src/Entity/Spip'
prefix: 'App\Entity\Spip'
alias: Spip
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
Code snippet that reproduces the problem
The clas AuteurLien
is very simple and never reference to namespace App\Entity\Tud
:
<?php
namespace App\Entity\Spip;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: \App\Repository\Spip\AuteurLienRepository::class, readOnly: true)]
#[ORM\Table(name: 'spip_auteurs_liens')]
class AuteurLien
{
#[ORM\Id]
#[ORM\Column(name: 'id_auteur', type: 'integer')]
private readonly int $idAuteur;
#[ORM\Column(name: 'id_objet', type: 'integer')]
private readonly int $idObjet;
#[ORM\Column(type: 'string')]
private readonly string $objet;
public function __construct()
{
$this->idAuteur = 0;
$this->idObjet = 0;
$this->objet = '';
}
public function getIdAuteur(): int
{
return $this->idAuteur;
}
public function getIdObjet(): int
{
return $this->idObjet;
}
public function getObjet(): string
{
return $this->objet;
}
}