Вот пример моего загрузчика:
if (!defined('APPLICATION_PATH')) {
define('APPLICATION_PATH', realpath(getcwd() . '/../application'));
}
/**
* Add the APPLICATION_PATH and the library dir to the include_path
*/
set_include_path(get_include_path() . PATH_SEPARATOR . APPLICATION_PATH . PATH_SEPARATOR . realpath(APPLICATION_PATH . '/../library'));
/**
* Load the file loader to setup the class autoloader
*/
include_once 'Loader.php';
if (!class_exists('Loader')) {
die('Could not load class loader.');
}
spl_autoload_register('Loader::autoload');
Я бы лично пошел вторым путем. Я научился любить include_path: вероятно, наблюдается некоторое снижение производительности при просмотре большого количества каталогов, но я сомневаюсь, что это будет значительным. Это также предотвращает забывание ошибок о включении константы пути.
В дополнение к этому я поставил свои контроллеры и т. Д. В /application/
, а некоторые библиотеки в /library/
. Это все идет над корнем сети. Он полностью запрещает пользователям доступ к этим файлам, в отношении которых вы должны принять иные меры предосторожности, если у вас есть все под корнем документа. Если ваш хост поддерживает это (некоторые общие хосты этого не делают), воспользуйтесь этим!
Обновление
В случае приложения с высокой нагрузкой хорошо ли использовать второй метод ??
По-моему, если бы вы следили за тем, что у вас есть include_path
(например, на моей машине с Windows dev у меня есть все, что мне не нужно: SQL Server, Ruby и т. Д.) И если бы вычеркнуть все, что не нужно, то второй способ будет в порядке.
Еще одна вещь, которую вы могли бы сделать, - сбросить include_path
в конце скрипта и жестко закодировать его в файл php.ini.
Правда, правда. Я не думаю, что это будет узким местом в производительности вашей системы. Используйте то, что вам легче.
У вас есть проблемы с производительностью на сайте, на котором вы работаете, или это мера предосторожности? Я понимаю, почему вы хотите сделать предоптимизацию (я должен помешать себе это сделать), но серьезно. Разберитесь с этими проблемами, когда они возникнут. Когда вам повезет с популярным сайтом, тогда имейте дело. В конце концов, это не кошмар, если вам нужно заменить несколько require
с.