Comments 7
Спасибо, на днях попробую.
Класс PHP_Autoload ваш? Лично у меня была проблема (не с вашей библиотекой) с регистрацией автолоадера путем банального объявления функции __autoload(), вместо этого пришлось писать spl_autoload_register(), из чего делаю вывод, что работать будет не всегда. Использование PEAR_NameScheme — сильное замедление — от там тыркается по всем путям из include path с проверкой на наличие файла (сам). Вот, к примеру, стандартный Zend_Loader делает это вызовом include(_once), делегируя проверку существования файла движку, что, думаю, быстрее.
Не, мое только My_NameScheme_Autoload (собственно он ведь также и решает проблему неоптимального «тыркания» по всем путям)
Решает ли? My_NameScheme_Autoload::classAutoloader() использует PEAR_NameScheme::name2path(), а там перебор по PEAR_NameScheme::getInc(), который в свою очередь возвращает массив путей из include_path + пользуется не оптимальной (по мнению разработчиков Zend_Loader) проверкой
А вот ту Вы уже полученный финальный путь опять проверяете на существование, но уже «оптимально» =). Кстати, что вернет
file_exists
foreach (PEAR_NameScheme::getInc($absolutize) as $libDir) {
$path = $libDir . '/' . $fname;
if (file_exists($path)) {
if (!$absolutize) return $fname;
else return $path;
}
}
А вот ту Вы уже полученный финальный путь опять проверяете на существование, но уже «оптимально» =). Кстати, что вернет
fopen(false, "r", true)
? Ведь такой вариант событий не исключен, судя по коду PEAR_NameScheme::name2path()
.Sign up to leave a comment.
Накопительная сборка ZF в один файл