用php获取父文件夹路径

时间:2011-04-07 14:31:20

标签: php model-view-controller oop include-path

我正在研究我的第一个MVC框架,并希望为BASE_PATH,APP_PATH,LIB_PATH&定义4个常量。 PUBLIC_PATH。我的文件结构如下所示:

/
/app
    /controllers
    /models
    /views
/config
/db
/lib
/public_html
    /css
    /js
    /img

我的 index.php 文件位于 public_html 目录中。目前有以下代码:

error_reporting(E_ALL);
define('BASE_PATH',dirname(realpath(__FILE__)) . "/../");
define('APP_PATH',dirname(realpath(__FILE__)) . "/../app/");
define('LIB_PATH',dirname(realpath(__FILE__)) . "/../lib/");
define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");

require LIB_PATH . 'core.php';

这很有效,但我觉得必须有一个更好的方法来做到这一点,而不是所有的“......”。任何建议或这是最好的方式吗?让我知道。谢谢!


ANSWER

感谢@fireeyedboy和@KingCrunch,我想出了我想要的解决方案。这是我的最终代码:

define('PUBLIC_PATH', dirname(__FILE__) . "/");
define('BASE_PATH', dirname(PUBLIC_PATH) . "/");
define('APP_PATH', BASE_PATH . "app/");
define('LIB_PATH', BASE_PATH . "lib/");

3 个答案:

答案 0 :(得分:9)

这个怎么样:

define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");
define('BASE_PATH',dirname(PUBLIC_PATH));
define('APP_PATH',BASE_PATH . "/app/");
define('LIB_PATH',BASE_PATH . "/lib/");

换句话说,再次使用dirname()。并重新定义常量以直接使用它们。不确定它是否有助于提高可读性。

答案 1 :(得分:5)

首先:

realpath(__FILE__)

只是无用的

然而,没有“真正的”更好的方法,因为../不是“脏”。我脑海中唯一的另一种解决方案

dirname(dirname(__FILE__))

..是文件系统(它不是由php发明;))定义其父目录的方式,同样.定义了当前目录。

答案 2 :(得分:0)

这不应该在index.php中..它应该在config /文件夹中,PUBLIC_PATH与BASE_PATH相同...而且我不喜欢使用dirname和realpath函数,我只是手动编写正确的路径(但这只是我)

define('BASE_PATH',dirname(realpath(__FILE__)) . "/../");
define('APP_PATH',BASE_PATH . "app/");
define('LIB_PATH',BASE_PATH . "lib/");