为什么在Symfony中不应该使用绝对路径常量__DIR__和__FILE__

挑战者

我使用SensioLabs Insight来控制代码质量。

对于简单的文件上传,我必须获取我的上载目录的绝对路径:

protected function getUploadRootDir()
{
    // the absolute directory path where uploaded
    return __DIR__.'/../../../../web/'.$this->getUploadDir();
}

直接来自官方文档的代码(如何使用Doctrine处理文件上传

但是如果分析的代码包含__DIR____FILE__PHP魔术常数,SLInsight会发出警告

__DIR__并且__FILE__常量可能与Symfony资源覆盖系统冲突。

如何使用此常数会导致与Symfony发生冲突?

在我的代码中如何避免它们?

哈维尔·埃吉鲁兹

对于文件上载类,您可能会忽略此错误消息。但是在其他情况下,最好使用Symfony文件定位器,而不是对文件路径进行硬编码。例如:

$path = $this->get('kernel')->locateResource('@AppBundle/Resources/config/services.xml');

代替:

$path = __DIR__.'/../../../src/Acme/AppBundle/Resources/config/services.xml'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章