Я узнал о функции set_include_path (). Все это время я определил константу в файле config.php
define('BASE_PATH', '/var/www/mywebsite/public_html/');
И во всех последующих php-файлах я бы включил так
include(BASE_PATH.'header.php'); include(BASE_PATH.'class/cls.data_access_object.php');
вinclude(BASE_PATH.'header.php'); include(BASE_PATH.'class/cls.data_access_object.php');
Есть ли преимущество в постоянном подходе к подходу set_include_path и наоборот? Является ли постоянный подход устаревшим?
Использование set_include_path () (или ini_set ('include_path', …)) позволяет указать несколько папок, которые будут содержать ваш библиотечный код. Например, если ваше приложение зависит от множества различных фреймворков / библиотек, например PEAR и Zend FW, у вас может быть что-то вроде:
ini_set ('include_path', '/ usr / local / php / pear: / usr / local / php / zendfw');
Недостатком такого подхода является то, что он будет использовать любой файл, который он найдет первым; если у вас есть файл под названием «Mailer.php» в более чем одном из ваших включенных путей, он будет включать в себя первый найденный, вызывая тонкие ошибки, если это не ваше намерение. Хорошая организация кода обычно решает эту проблему. Кроме того, include_path проходит через кеш реального пути ( http://us2.php.net/realpath ), который иногда необходимо настроить, чтобы повысить производительность в зависимости от вашей настройки.
Оба способа хороши, однако использование метода define () более явное.
FWIW, я обычно использую ini_set ('include_path', …).
Я думаю, что объяснение Микаэля очень ясное.
Я рекомендовал вам использовать «set_include_path», когда вы храните все ваши файлы PHP в папке, например: «libs /» (это проще). Использование метода define () должно быть более быстрым, поскольку вы явно указываете путь к файлу.
Всегда старайтесь избегать использования абсолютных путей, если они действительно не нужны. Мне было очень полезно указать ваши пути таким образом:
define("BASE_PATH", dirname(__FILE__));
Таким образом, вам не придется обновлять путь каждый раз, когда вы перемещаете код.