首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPStan没有看到正确的ObjectManager原则

PHPStan没有看到正确的ObjectManager原则
EN

Stack Overflow用户
提问于 2019-04-29 10:46:13
回答 1查看 1.9K关注 0票数 2

我尝试用PHPStan改进我的代码。我已经安装了:

在这里,我的phpstan.neon:

代码语言:javascript
复制
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

此外,我还测试了调用下一个函数的方法:

代码语言:javascript
复制
$kernel = static::bootKernel();
$doctrine = $kernel->getContainer()->get('doctrine');
$doctrine->getManager()->getConfiguration();
$doctrine->getManager()->getEventManager();

PHPStan抱怨道:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2019-09-14 17:25:39

你可以:

  1. 添加内联PHPDoc (在任何地方工作):
代码语言:javascript
复制
/** @var \Doctrine\ORM\EntityManagerInterface */
$doctrine = $kernel->getContainer()->get('doctrine');
  1. 使用断言(只在测试中工作):
代码语言:javascript
复制
$doctrine = $kernel->getContainer()->get('doctrine');
self::assertInstanceOf(EntityManagerInterface::class, $doctrine);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55901767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档