0

从 symfony 3.4 捆绑包 AppBundle 中的一个简单实体类开始,php-cs-fixer 似乎去除了文档字符串使用的导入,但仅在引用 AppBundle/ 时 - vendor/ 中的命名空间似乎是安全的

从以下简单的实体类开始

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\EntityManager;
use AppBundle\Entity\AclObjectIdentities; // will be removed
use AppBundle\Entity\AclSecurityIdentities; // will be removed

class AclEntries
{
    /** @var AclObjectIdentities Object identity */
    private $objectIdentity;

    /** @var EntityManager Doctrine entity manager */
    private $em;
}

我使用一些合理的默认值运行 php-cs-fixer 命令

php-cs-fixer fix src/AppBundle/Entity/AclEntriesDEBUG.php --rules=@PSR2,@Symfony

该文件得到了很好的清理,但是所有到 AppBundle 的 phpdoc 导入都被删除为未使用

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\EntityManager;

class AclEntries
{
    /** @var AclObjectIdentities Object identity */
    private $objectIdentity;

    /** @var EntityManager Doctrine entity manager */
    private $em;
}

对我来说,预期的行为应该是“所有导入都是平等的”并且“使用 AppBundle ...”不会被剥夺。

4

1 回答 1

1

从您当前所在的同一命名空间导入无效,因为 PHP 会自动导入它。这就是 PHP CS Fixer 删除它们的原因。如果即使不需要它们也想保留它们,no_unused_imports请从配置中删除规则,例如: php-cs-fixer fix src/AppBundle/Entity/AclEntriesDEBUG.php --rules=@PSR2,@Symfony,-no_unused_imports

于 2018-06-07T11:42:29.350 回答