【问题标题】:using php __DIR__使用 php __DIR__
【发布时间】:2013-08-04 19:05:58
【问题描述】:

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

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

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

$projectfiles = __DIR__("projectfiles/")

那么我想要一个库文件能够在/venders/library/generalfunctions.php文件中使用这个变量

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

建议?

【问题讨论】:

    标签: php constants


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      看起来这个应用程序的架构不是最佳的,但我不知道更多,我无法对此发表评论..

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

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

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

      include(PROJECTFILES.'include_me.php');
      

      请记住,__DIR__ 将引用config.php 所在的目录。如果config.phpprojectfiles 的父文件夹,则上述方法将起作用。

      【讨论】:

        猜你喜欢
        • 2015-12-08
        • 2021-11-06
        • 1970-01-01
        • 2014-08-24
        • 2014-12-23
        • 2016-01-22
        • 2021-12-27
        • 1970-01-01
        相关资源
        最近更新 更多