如何在应用程序中定义路径?

时间:2010-05-20 11:23:34

标签: php config path include-path

我正在使用全局常量,如下所示:

/project
    /application
        bootstrap.php
    /public
        index.php

的index.php

  • 定义PUBLIC_PATH和APPLICATION_PATH
  • 调用APPLICATION_PATH。 bootstrap.php中

bootstrap.php中

  • 定义LIBRARY_PATH,MODULES_PATH,TEMP_PATH,CONFIG_PATH,......
  • 做实事

另外我想问一下有没有更好的方法呢?

3 个答案:

答案 0 :(得分:1)

你的意思是你的申请不公开?无论如何,通常我只是在我的前端控制器中定义ROOT常量(通常为index.php),如下所示:

define('ROOT', str_replace('\\', '/', __DIR__));

或者在__DIR__不可用的旧版PHP上:

define('ROOT', str_replace('\\', '/', dirname(__FILE__)));

由于内部结构永远不会改变,我只需要执行以下操作:

include(ROOT . '/application/libraries/Email.php');

而不是:

define('LIBRARY_PATH', ROOT . '/application/libraries');
include(LIBRARY_PATH . '/Email.php');

减少污染。 =)

答案 1 :(得分:1)

根据您的目录树:

这是我用来加载PHP脚本的那个,基本上你可以把它放在index.php或者bootstrap.php中

define("PROJECT_DISK_PATH", str_replace('\\', '/', dirname(dirname(__FILE__))) . '/');
/*
Server variables $_SERVER['PHP_SELF'] and $_SERVER['SCRIPT_FILE_NAME'] are both USELESS to 
accomplish this task because they both return the currently executed script and not this included file path.
*/

然后在PHP脚本中执行:

include(PROJECT_DISK_PATH . 'path/to/your/script/somescript.php')

这些是我用来加载JS / CSS脚本IN PAGES:

define("PROJECT_DOCROOT_PATH", '/' . substr(PROJECT_DISK_PATH, strlen($_SERVER['DOCUMENT_ROOT'] . '/')));
define("PROJECT_HTTP_PATH", "http://" . $_SERVER['HTTP_HOST'] . JPL_DOCROOT_PATH);

所以在你的页面中你可以这样做:

   <script type="text/javascript" src="<?php echo PROJECT_DOCROOT_PATH; ?>path/to/your/script/somescript.js"></script>

答案 2 :(得分:-1)

我尽可能使用$_SERVER['DOCUMENT_ROOT']来寻找绝对路径 如果不可能,我会使用相对路径,就像Alix一样。