使用php __DIR__

时间:2013-08-03 16:40:52

标签: php constants

我正在尝试创建一个config.php文件,该文件定义一个全局变量,该变量包含名为“projectfiles”的目录的路径。我们的想法是,无论文件树在何处,任何文件都可以指向此目录。

我可以使用__DIR__吗?有人愿意给我一个如何运作的例子吗?我在考虑以下内容:

我想在这里定义一个目录:在/config.php文件

$projectfiles = __DIR__("projectfiles/")

然后我想要一个库文件能够在/venders/library/generalfunctions.php file

中使用这个变量
include("../../../config.php");
$file = $projectfiles/testfile.php

建议?

2 个答案:

答案 0 :(得分:6)

__DIR__肯定是您正在寻找的。使用它为所需文件提供相对路径。我强烈建议您对所有库文件使用require_onceinclude_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.phpprojectfiles的父文件夹,则上述内容将起作用。