Pull to refresh

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().
Я о том, что после однократного формирования сборки All.php никакие include уже не используются (для чего все и задумывалось).
А __autoload() после этого вы уже не регистрируете?
Регистрирую, но он ни разу не срабатывает, т.к. все классы уже загружены сборкой.
Sign up to leave a comment.

Articles