我正在尝试创建一个config.php文件,该文件定义一个全局变量,该变量包含名为“projectfiles”的目录的路径。我们的想法是,无论文件树在何处,任何文件都可以指向此目录。
我可以使用__DIR__
吗?有人愿意给我一个如何运作的例子吗?我在考虑以下内容:
我想在这里定义一个目录:在/config.php
文件
$projectfiles = __DIR__("projectfiles/")
然后我想要一个库文件能够在/venders/library/generalfunctions.php
file
include("../../../config.php");
$file = $projectfiles/testfile.php
建议?
答案 0 :(得分:6)
__DIR__
肯定是您正在寻找的。使用它为所需文件提供相对路径。我强烈建议您对所有库文件使用require_once
或include_once
。
if( !defined( __DIR__ ) ) define( __DIR__, dirname(__FILE__) );
require_once( __DIR__ . '/../../../config.php');
.
.
.
// you code here
使用第一行确保您不会遇到PHP 5.2及其他问题。这将允许您根据目录结构而不是相对于调用的脚本包含文件。许多框架使用dirname(__FILE__)
代替,但运行不止一次是相当浪费的。最好只用支票将它添加到某个地方。
答案 1 :(得分:0)
看起来这个应用程序的架构不是最优的,但是在不知道更多的情况下,我无法对此发表评论..
我建议将它定义为一个常量,以便它不会被改变,并且无论范围如何都可用。
define('PROJECTFILES',__DIR__.'/projectfiles/');
<强>假设:强>
/config.php
/projectfiles/include_me.php
include(PROJECTFILES.'include_me.php');
请注意,__DIR__
将引用config.php
所在的目录。如果config.php
是projectfiles
的父文件夹,则上述内容将起作用。