我试图比较一些PHP框架和PHP Depend的指标,遇到了令人讨厌的,可能是意想不到的行为:
忽略@package
注释,而是将名称空间视为包。这是一个问题,因为通常使用的子命名空间并不意味着作为单独的包(例如SomePackage'Exception
)
类文件示例
<?php
/**
*
* This file is part of the Aura Project for PHP.
*
* @package Aura.Di
*
* @license http://opensource.org/licenses/bsd-license.php BSD
*
*/
namespace Aura'Di'Exception;
use Aura'Di'Exception;
/**
*
* The named DI container already exists.
*
* @package Aura.Di
*
*/
class ContainerExists extends Exception
{
}
示例报告
<package name="Aura'Di'Exception" cr="0.15" noc="5" nof="0" noi="0" nom="0" rcr="0.28114285714286">
...
</package>
现在我的问题是:这是什么原因,我怎么能解决它?
@package在PHP 5.3版本获得真正的名称空间之前是一种伪名称空间技术。因此,我认为几乎每个静态代码处理工具都是为了在存在名称空间时选择名称空间而编写的,只有在不存在名称空间时才会返回到使用@package。在命名空间之上继续使用@package作为一种不同的分组机制的想法偶尔会被提到,特别是关于phpDocumentor,但我不知道在这些类型的应用程序中真正实现这种行为的任何努力。