5

我正在开发我的第一个 MVC 框架,并想为 BASE_PATH、APP_PATH、LIB_PATH 和 PUBLIC_PATH 定义 4 个常量。我的文件结构如下所示:

/
/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';

这行得通,但我觉得必须有更好的方法来做到这一点,而不需要所有的“..”。有什么建议或者这是最好的方法吗?让我知道。谢谢!


回答

感谢@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/");
4

3 回答 3

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(),再次使用。并重新排序定义常量以直接使用它们。不确定它是否有助于提高可读性。

于 2011-04-07T14:34:46.597 回答
5

第一的:

realpath(__FILE__)

只是没用

但是,没有“真实”更好的方法,因为../它并不“肮脏”。我想到的唯一其他解决方案

dirname(dirname(__FILE__))

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

于 2011-04-07T14:34:30.277 回答
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/");
于 2011-04-07T14:41:25.277 回答