Лучшая практика для путей PHP

Я был повсюду в Интернете, пытаясь понять, как лучше всего обрабатывать пути на моем веб-сайте. Должен ли я использовать относительные пути, абсолютные пути?

Я видел dirname ( FILE ) несколько раз. Одна из проблем, с которыми я сталкиваюсь с относительными путями, заключается в том, что php-файлы, которые включены несколькими другими файлами на разных уровнях каталога, вызывают разрыв относительных путей. Например, если структура каталогов

Root A B b 

И php-файл в b и A включает в себя другой файл из B, тогда относительные пути для кода в файле в B будут разными.

Извините, если это сбивает с толку, мне сложно печатать то, что я пытаюсь сказать.

Таким образом, в общем, что является лучшим способом обработки путей к файлам в отношении включений и операций с файлами в коде.

Спасибо

Тут есть много способов узнать путь, который мне всегда проще определить константу в файле в корне проекта index.php или config of sort. то я могу использовать SITE_ROOT для SITE_ROOT / class loaders ect и SITE_URL для представлений, контроллеров, ect перенаправления.

 <?php $root=pathinfo($_SERVER['SCRIPT_FILENAME']); define ('BASE_FOLDER', basename($root['dirname'])); define ('SITE_ROOT', realpath(dirname(__FILE__))); define ('SITE_URL', 'http://'.$_SERVER['HTTP_HOST'].'/'.BASE_FOLDER); ?> 

Автозагрузчик базового класса

 <?php function __autoload($class_name) { include (SITE_ROOT.'/includes/'.$class_name.'.php'); } $obj = new MyClass1(); $obj2 = new MyClass2(); ?> 

Вы можете поместить все ваши включенные файлы в один основной каталог. Затем создайте переменную пути в файле конфигурации или в самом скрипте, который указывает на каталог include.

Лучший способ использования правильных соглашений об именах для структуры каталогов, файлов PHP и имен классов файла и дизайна автозагрузчика для включения файла

В структуре Zend есть несколько хороших указателей на оптимизацию включенных путей:

http://framework.zend.com/manual/1.10/en/performance.classloading.html

Даже если вы не используете фреймворк Zend, это хорошие указатели. Общие пункты:

  • Использовать абсолютные пути
  • Уменьшите количество включенных путей, которые вы определяете
  • Определить текущий каталог последним или вообще не указывать
  • Определите свой Zend Framework include_path как можно раньше (не очень важно, если вы не используете Zend)

Можно использовать новую версию php (PHP5.3) __autoload Итак, вам просто нужно определить корень вашего приложения.