在我的php项目中,我想确保代码保持可移植性和服务器独立性。
所以我添加了一个“config.php”,它包含在每个php文件中,其中配置了几个config-var。
我用
包含它include_once('config.php');
我的问题是,这个config.php中的第一个vars之一是:
global $path;
$path = $_SERVER['DOCUMENT_ROOT'];
使所有包含/要求绝对和“便携”。
这当然适用于include_once('config.php')之后的所有内容; - 但我怎样才能使这个具体包括绝对?
我现在的“解决方案”就是这段代码:
//set global path if not yet set
if(!isset($path)){
global $path;
$path = $_SERVER['DOCUMENT_ROOT'];
}
我将在每个php文件中添加。
有更优雅的解决方案吗?谢谢!
答案 0 :(得分:2)
另一种方法是使用$ path作为定义,例如。
define('PATH',$_SERVER['DOCUMENT_ROOT']);
答案 1 :(得分:2)
另一种方法是,使用$ path作为静态变量定义,如
define('PATH', $_SERVER['DOCUMENT_ROOT']);
然后您可以将PATH用作正常变量
echo 'directory: '.PATH;
变量区分大小写,使它们不区分大小写,以便您可以使用PATH或路径或路径..最后添加true:
define('DOCROOT', $_SERVER['DOCUMENT_ROOT'], true);
一个常见的用例是我缩短DIRECTORY_SEPARATOR:
define('DS', DIRECTORY_SEPARATOR, true);
此致,Max
答案 2 :(得分:1)
那应该没问题!如果有更好的方法,我不太确定。如果您的代码依赖于config.php,我建议使用require_once('config.php');如果找不到或包含该文件,则脚本将被终止,从而导致致命错误,并且在该点之后不会继续!
答案 3 :(得分:0)
如果你没有使用php框架..这是最好的解决方案..除非你想把它放在$ _SESSION var但是我不推荐它..
答案 4 :(得分:0)
全局变量确实是地狱的好方法。使用它们很可能是程序员所能做的最糟糕的事情。您是如何在第一次看到的大型项目中找到它并且需要分析???只是你不会。 Ctrl + f ok,但是,你确定要对你的项目进行ctrl + f吗?另外,您通常无法访问所有项目文件,或者您只是在本地光盘上没有它们。这就像每个拼贴画的第一课:永远不要使用全球变量。有没有听说过静态变量和OOP?这是要走的路。太糟糕了,PHP不允许你将任何变量分配给常量甚至是静态变量(它非常适用于静态方法 - 我只是测试了它 - 为什么静态变量然后是作者呢?)但DUDE,为什么你试图重命名变量。因为这就是你正在做的事情。你正在将名为'$ _SERVER ['DOCUMENT_ROOT']'的变量重命名为另一个名为'PATH'的变量,好吧它更短但是这样做的重点是什么?更短!=更好。 $ _SERVER已经超级全球化了(这也很糟糕),但至少那些少数超级全球人都为大家所熟知,我打赌PHP的作者无法取代它们,因为人们会活着吃它们:D(以及与旧的兼容性的问题)版本)的