Подтвердить что ты не робот

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

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

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

Root
    A
    B
       b

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

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

4b9b3361

Ответ 1

Есть много способов узнать путь, который всегда всегда проще определить константу в файле в корне проекта index.php или config сортировки. то я могу использовать SITE_ROOT для include/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(); 
?>

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

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