为了避免使用superglobals,我似乎必须使用这样的方法:
$doc_root = filter_input(INPUT_SERVER, 'DOCUMENT_ROOT');
以获取文档根目录。但是如果没有指定的过滤器--这就是FILTER_UNSAFE_RAW .要使用什么过滤器,是否有一个为路径预先定义的过滤器,或者我是否需要使用regex来创建自己的过滤器。
既然我已经过滤了$doc_root,那么每次我想使用它时,我都会从$_SERVER超级全局数组中重新过滤吗?或者,我应该在函数的内部声明global $doc_root,然后使用它(或者引用$GLOBALS数组更好吗?)
发布于 2015-04-27 12:59:11
使用超级球体本身并不坏。但是您应该在代码中避免它们,因为这增加了对环境的隐藏依赖,并使代码更难测试。
因此,如果您关心这个隐藏的依赖项,您应该在前面的控制器中获取值,并使用它注入类中。或者,如果使用DI容器,则可以定义返回此值的服务。
在这里,使用filter_input函数根本没有帮助--它只是隐藏了超级全局访问。
也许更安全的选择确实是使用__DIR__常量。
https://stackoverflow.com/questions/29894905
复制相似问题