我尝试用PHPStan改进我的代码。我已经安装了:
在这里,我的phpstan.neon:
includes:
- vendor/phpstan/phpstan/conf/config.levelmax.neon
- vendor/phpstan/phpstan-symfony/extension.neon
- vendor/phpstan/phpstan-doctrine/extension.neon
- vendor/phpstan/phpstan-doctrine/rules.neon
- vendor/phpstan/phpstan-phpunit/extension.neon
- vendor/phpstan/phpstan-phpunit/rules.neon
parameters:
paths:
- %currentWorkingDirectory%/src
- %currentWorkingDirectory%/tests
symfony:
container_xml_path: '%currentWorkingDirectory%/var/cache/dev/srcApp_KernelDevDebugContainer.xml'
autoload_directories:
- %currentWorkingDirectory%/tests此外,我还测试了调用下一个函数的方法:
$kernel = static::bootKernel();
$doctrine = $kernel->getContainer()->get('doctrine');
$doctrine->getManager()->getConfiguration();
$doctrine->getManager()->getEventManager();PHPStan抱怨道:
Call to an undefined method Doctrine\Common\Persistence\ObjectManager::getConfiguration().
Call to an undefined method Doctrine\Common\Persistence\ObjectManager::getEventManager().我研究了$doctrine->getManager(),我有Doctrine\ORM\EntityManagerInterface,扩展了Doctrine\Common\Persistence\ObjectManager,但是PHPStan认为我有Doctrine\Common\Persistence\ObjectManager
如何告诉PHPStan $doctrine->getManager()是Doctrine\ORM\EntityManagerInterface
发布于 2019-09-14 17:25:39
你可以:
/** @var \Doctrine\ORM\EntityManagerInterface */
$doctrine = $kernel->getContainer()->get('doctrine');$doctrine = $kernel->getContainer()->get('doctrine');
self::assertInstanceOf(EntityManagerInterface::class, $doctrine);https://stackoverflow.com/questions/55901767
复制相似问题