14

我正在尝试创建一个 config.php 文件,该文件定义了一个全局变量,该变量包含一个名为“projectfiles”的目录的路径。这个想法是任何文件都可以指向这个目录,而不管它在文件树中的什么位置。

我可以用__DIR__这个吗?有人愿意给我一个例子来说明这可能是如何工作的吗?我在想类似以下的事情:

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

$projectfiles = __DIR__("projectfiles/")

然后我希望一个库文件能够在/venders/library/generalfunctions.php文件中使用这个变量

include("../../../config.php");
$file = $projectfiles/testfile.php

建议?

4

2 回答 2

6

__DIR__肯定是你要找的。使用它来提供所需文件的相对路径。我强烈建议对所有库文件使用require_onceor include_once

if( !defined( __DIR__ ) ) define( __DIR__, dirname(__FILE__) );
require_once( __DIR__ . '/../../../config.php');
.
.
.
// you code here

使用第一行可确保您在使用 PHP 5.2 和返回时不会遇到问题。这将允许您基于目录结构而不是相对于调用的脚本来包含文件。很多框架都使用dirname(__FILE__)了,但是多次运行比较浪费。最好将其添加到某个地方并进行检查。

于 2015-04-02T22:47:34.150 回答
0

看起来这个应用程序的架构不是最优的,但在不了解更多信息的情况下,我无法对此发表评论..

我建议将它定义为一个常量,这样它就不能被更改并且无论范围如何都可用。

define('PROJECTFILES',__DIR__.'/projectfiles/');

假设:
/config.php
/projectfiles/include_me.php

include(PROJECTFILES.'include_me.php');

请记住,这__DIR__将引用其中的目录config.php。如果config.php是父文件夹,projectfiles则上述内容将起作用。

于 2013-08-03T16:50:07.117 回答