2010-05-20 5 views
3

Я использую глобальные константы, например:Как вы определяете пути в приложении?

/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, ...
  • ли реальная работа

Также я хочу спросить, если есть лучший способ сделать это?

+0

лучше определить: P – naugtur

+0

Почему этот вопрос стал вики сообщества? –

ответ

1

Вы имеете в виду, что ваша заявка не является общедоступной? Во всяком случае, как правило, я просто определить константу ROOT в моей передней контроллер (обычно index.php), как это:

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

Или на старых версиях PHP, где __DIR__ не доступен:

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

С внутренней структуры никогда не меняется, я просто сделать что-то вроде:

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

Вместо:

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

Меньше загрязнения. =)

+0

В моем случае PUBLIC_PATH такой же, как вы описали: str_replace ('\\', '/', '__DIR__') Приложение dir предназначено для внешнего корня Интернета (мера безопасности), поэтому для него требуется дополнительная константа: APPLICATION_PATH – Hemaulo

+0

@Hemaulo: Не совсем ... Вы можете использовать '/ ..'с константой' ROOT'. –

-1

Я прохожу по абсолютной траектории, если это возможно, используя $_SERVER['DOCUMENT_ROOT']
Если это невозможно, я использую относительные пути, похожие на Alix.

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 скрипт на страницах:

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> 
Смежные вопросы