Skip to content

Cannot load object manager #233

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

Closed
mbrodala opened this issue Nov 23, 2021 · 6 comments
Closed

Cannot load object manager #233

mbrodala opened this issue Nov 23, 2021 · 6 comments

Comments

@mbrodala
Copy link
Contributor

mbrodala commented Nov 23, 2021

I tried to load the object manager as documented to fix #229 but this doesn't seem to work.

My phpstan.neon:

parameters:
  level: 5
  paths:
    - src
  doctrine:
    objectManagerLoader: tests/doctrine-object-manager.php

The tests/doctrine-object-manager.php:

<?php

declare(strict_types=1);

use App\Kernel;
use Symfony\Component\Dotenv\Dotenv;

require __DIR__ . '/../vendor/autoload.php';

(new Dotenv())->bootEnv(__DIR__ . '/../.env');

$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$kernel->boot();

return $kernel->getContainer()->get('doctrine')->getManager();

Result:

$ phpstan
Note: Using configuration file /.../phpstan.neon.
 87/87 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

 -- ----------------------------------------------------------------------------------------------------------------------------------------------------------- 
     Error                                                                                                                                                      
 -- ----------------------------------------------------------------------------------------------------------------------------------------------------------- 
     Reached internal errors count limit of 50, exiting...                                                                                                      
     Internal error: Internal error: Object manager could not be loaded in file /.../src/.../<file>.php                                          
     Run PHPStan with --debug option and post the stack trace to:                                                                                               
     https://github.com/phpstan/phpstan/issues/new?template=Bug_report.md                                                                                       
     ...  many more ...                                                                                   
     Child process error (exit code 1):                                                                                                                         
     Child process error (exit code 1):                                                                                                                         
 -- ----------------------------------------------------------------------------------------------------------------------------------------------------------- 

                                                                                                                        
 [ERROR] Found 60 errors                                                                                                

The suggested debug run:

$ phpstan --debug
Note: Using configuration file /.../phpstan.neon.
/.../src/.../<file>.php
Uncaught PHPStan\ShouldNotHappenException: Object manager could not be loaded in /.../vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/ObjectMetadataResolver.php:67
#0 /.../vendor/phpstan/phpstan-doctrine/src/Type/Doctrine/ObjectMetadataResolver.php(56): PHPStan\Type\Doctrine\ObjectMetadataResolver->loadObjectManager('/.../t...')
#1 /.../vendor/phpstan/phpstan-doctrine/src/Rules/Doctrine/ORM/EntityNotFinalRule.php(41): PHPStan\Type\Doctrine\ObjectMetadataResolver->getObjectManager()
#2 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(77): PHPStan\Rules\Doctrine\ORM\EntityNotFinalRule->processNode(Object(PHPStan\Node\InClassNode), Object(PHPStan\Analyser\MutatingScope))
#3 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(479): PHPStan\Analyser\FileAnalyser->PHPStan\Analyser\{closure}(Object(PHPStan\Node\InClassNode), Object(PHPStan\Analyser\MutatingScope))
#4 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(253): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Class_), Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#5 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(468): PHPStan\Analyser\NodeScopeResolver->processStmtNodes(Object(PhpParser\Node\Stmt\Namespace_), Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#6 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/NodeScopeResolver.php(221): PHPStan\Analyser\NodeScopeResolver->processStmtNode(Object(PhpParser\Node\Stmt\Namespace_), Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#7 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/FileAnalyser.php(164): PHPStan\Analyser\NodeScopeResolver->processNodes(Array, Object(PHPStan\Analyser\MutatingScope), Object(Closure))
#8 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Analyser/Analyser.php(52): PHPStan\Analyser\FileAnalyser->analyseFile('/.../s...', Array, Object(PHPStan\Rules\Registry), NULL)
#9 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyserRunner.php(56): PHPStan\Analyser\Analyser->analyse(Array, Object(Closure), NULL, true, Array)
#10 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(146): PHPStan\Command\AnalyserRunner->runAnalyser(Array, Array, Object(Closure), NULL, true, true, '/.../p...', NULL, NULL, Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput))
#11 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseApplication.php(78): PHPStan\Command\AnalyseApplication->runAnalyser(Array, Array, true, '/.../p...', Object(PHPStan\Command\Symfony\SymfonyOutput), Object(PHPStan\Command\Symfony\SymfonyOutput), Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput))
#12 phar:///.../vendor/phpstan/phpstan/phpstan.phar/src/Command/AnalyseCommand.php(144): PHPStan\Command\AnalyseApplication->analyse(Array, false, Object(PHPStan\Command\Symfony\SymfonyOutput), Object(PHPStan\Command\Symfony\SymfonyOutput), false, true, '/.../p...', Array, Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput))
#13 phar:///.../vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Command/Command.php(228): PHPStan\Command\AnalyseCommand->execute(Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_c862bb974\Symfony\Component\Console\Output\ConsoleOutput))
#14 phar:///.../vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(856): _PHPStan_c862bb974\Symfony\Component\Console\Command\Command->run(Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_c862bb974\Symfony\Component\Console\Output\ConsoleOutput))
#15 phar:///.../vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(237): _PHPStan_c862bb974\Symfony\Component\Console\Application->doRunCommand(Object(PHPStan\Command\AnalyseCommand), Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_c862bb974\Symfony\Component\Console\Output\ConsoleOutput))
#16 phar:///.../vendor/phpstan/phpstan/phpstan.phar/vendor/symfony/console/Application.php(138): _PHPStan_c862bb974\Symfony\Component\Console\Application->doRun(Object(_PHPStan_c862bb974\Symfony\Component\Console\Input\ArgvInput), Object(_PHPStan_c862bb974\Symfony\Component\Console\Output\ConsoleOutput))
#17 phar:///.../vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(82): _PHPStan_c862bb974\Symfony\Component\Console\Application->run()
#18 phar:///.../vendor/phpstan/phpstan/phpstan.phar/bin/phpstan(83): _PHPStan_c862bb974\{closure}()
#19 /.../vendor/phpstan/phpstan/phpstan(8): require('phar:///......')
#20 {main}

A few versions:

$ composer show phpstan/*
phpstan/extension-installer 1.1.0 Composer plugin for automatic installation of PHPStan extensions
phpstan/phpstan             1.2.0 PHPStan - PHP Static Analysis Tool
phpstan/phpstan-doctrine    1.0.1 Doctrine extensions for PHPStan
$ composer show doctrine/orm*
doctrine/orm 2.10.2 Object-Relational-Mapper for PHP
$ composer show symfony/framework*
symfony/framework-bundle v5.3.10 Provides a tight integration between Symfony components and the Symfony full-stack framework

What am I doing wrong?

@ondrejmirtes
Copy link
Member

Have you tried running php tests/doctrine-object-manager.php to see what's the error that's happening?

@mbrodala
Copy link
Contributor Author

There apparently is no error:

$ php tests/phpstan-object-manager.php 
$

@ondrejmirtes
Copy link
Member

Does it return exit code 0? echo $?

Anyway, please debug this in the ObjectManagerLoader, try to see what's going on there.

@mbrodala
Copy link
Contributor Author

Oh. my. gosh. You may or may not have noticed that I wrote tests/phpstan-object-manager.php in my last comment. That indeed how I named the file while the phpstan.neon refers to a (non-existing) tests/doctrine-object-manager.php. 🤦

Now the object manager can be loaded as desired.

I'll suggest a change to make the error message clearer.

@mbrodala
Copy link
Contributor Author

So my issue is resolved, thanks for checking.

@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 26, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants