2013-08-23 7 views
0

Я пытаюсь найти идеальный способ интегрировать файлы в другие в иерархию каталогов в моем проекте.Формат require_once создает различные формы поведения

Я заметил, что следующие работы в Eclipse PDT:

  1. require_once '/../../services/impl/UserService.php';
  2. require_once ('ui/controller/AbstractController.php');
  3. require_once $_SERVER['DOCUMENT_ROOT'] . '/myproject/daos/impl/UserDAO.php';
  4. require_once dirname(__FILE__) . '/../AsbtractDAO.php';

Все эти решимостью все же, как они» сформулированная совершенно другая. Любые идеи почему?

В частности, путь в скобках (2) разрешается, но не тогда, когда один и тот же путь находится между одинарными кавычками.

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

ответ

2

Для первых двух я предполагаю, что вы спрашиваете, использовать или не использовать скобки. Для этого взгляните на этот ответ: When should I use parenthesis in require/include statements? По существу вы можете использовать либо, но для удобства чтения лучше всего быть последовательным, в зависимости от того, что вы выберете. Первый стиль кажется более распространенным.

Использование абсолютных путей может ускорить работу, поскольку использование относительного пути даст указание PHP просмотреть все в include_path. Требовать может принять либо относительный, либо абсолютный, как и любые другие вызовы на других языках.

Третий пройдет абсолютный путь к требованию. Однако есть проблемы с $SERVER['DOCUMENT_ROOT'] (например, он не работает на некоторых серверах IIS).

В четвертом случае вы используете абсолютный путь файла от dirname(__FILE__) - также __DIR__ в PHP> = 5.3. Вы также можете сделать это, указав константу с помощью пути. Если вы собираетесь играть в гольф для кодов, это будет самое большое количество нажатий клавиш, но может повысить производительность, в зависимости от того, сколько файлов потребуется отсканировать в вашем include_path при импорте относительного местоположения.

Резюме:

  1. Плюсы: простой для чтения. Минусы: может быть медленнее из-за использования относительных путей
  2. То же, что и 1 - только стилистическая разница.
  3. Плюсы: может быть быстрее из-за использования абсолютных путей. Минусы - не будут работать на некоторых веб-серверах
  4. Плюсы: может быть быстрее из-за использования абсолютных путей. Минусы - более длинные
+0

Обратите внимание, что 1 и 2, похоже, ведут себя по-другому. 'ui/controller/...' (ui - это каталог, расположенный внутри того, который используется моим проектом) не будет работать так же, как между простыми кавычками, и мне приходится обращаться к относительным путям. Не уверен, почему. Это может быть просто причудой с Eclipse PDT. –

+0

Кроме того, если у вас есть рекомендации по наилучшему способу управления включениями, я все уши. Может быть, установите переменную где-нибудь в каталог приложения и выведите из нее абсолютные пути?Не достаточно удобно с автозагрузкой, чтобы использовать его прямо сейчас. –

+0

За # 2 - это папка ui в том же каталоге, что и файл, который пытается ее включить? Это похоже на относительный путь, если это не верхний каталог. – ChicagoRedSox