我使用SensioLabs Insight来控制我的代码质量.
对于简单的文件上传,我必须获取上传目录的绝对路径:
protected function getUploadRootDir() { // the absolute directory path where uploaded return __DIR__.'/../../../../web/'.$this->getUploadDir(); }
代码直接来自官方文档(如何使用Doctrine处理文件上传)
但SLInsight提出了一个警告,如果分析的代码中包含__DIR__
或__FILE__
PHP魔术常量:
__DIR__
和__FILE__
常量可能与Symfony资源覆盖系统冲突.
如何使用这些常量会导致与Symfony冲突?
我怎样才能在代码中避免它们?
对于文件上载类,您可以忽略此错误消息.但在其他情况下,最好使用Symfony文件定位器而不是硬编码文件路径.例如:
$path = $this->get('kernel')->locateResource('@AppBundle/Resources/config/services.xml');
代替:
$path = __DIR__.'/../../../src/Acme/AppBundle/Resources/config/services.xml'
嗯,这实际上是SensioLabs Insight无法正确处理的事情.由于资源覆盖系统,它警告不要使用常量,但在许多情况下,这些常量用于与资源覆盖系统无关的位置(这可能是您的代码的情况).所以你可以在这种情况下忽略警告