【问题标题】:How do you define paths in application?您如何定义应用程序中的路径?
【发布时间】:2010-05-20 11:23:34
【问题描述】:

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

/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,...
  • 确实有效

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

【问题讨论】:

  • 为什么这个问题会成为社区维基?

标签: php config path include-path


【解决方案1】:

您的意思是您的应用程序不公开?无论如何,通常我只是在我的前端控制器(通常是index.php)中定义一个ROOT 常量,如下所示:

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

减少污染。 =)

【讨论】:

  • 在我的情况下,PUBLIC_PATH 与您描述的相同: str_replace('\\', '/', __DIR__) 应用程序目录旨在位于 Web 根目录之外(安全措施),因此它需要附加常量:APPLICATION_PATH
  • @Hemaulo:不是真的...您可以将/.. 与您的ROOT 常量一起使用。
【解决方案2】:

根据你的目录树:

这是我用来加载 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 脚本的那些:

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>

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多