Как эффективно заменить Zend_Loader_Autoloader? - PullRequest
0 голосов
/ 02 января 2012

Из-за проблем с производительностью (в тесте) я пытаюсь использовать другой автозагрузчик, чем Zend_Loader_Autoloader по умолчанию.

Я пытался другим способом, используя:

$autoloader->removeAutoloader(array('Zend_Loader_Autoloader', 'autoload'))
    ->setDefaultAutoloader(array($loader, 'loadClass'));

Поскольку автозагрузчик тесно связан с большинством компонентов Zend Framework, я не могу «удалить его».

Я сделал пошаговую отладку Xdebug, и похоже, что автозагрузчик работает так:

1) getInstance 2) Проверьте, является ли вызываемый корень класса известным пространством имен и существует ли автозагрузчик для его пространства имен. 3) Положите в стек автозагрузчик без пространства имен 4) Пробовал автозагрузчик на каждом автозагрузчике, пока действительный в найден.

Однако в моем случае мой автозагрузчик уже делает это (я использую Opl Autoloader со стратегией classMap), я уже регистрирую пространство имен с соответствующим путем.

Так что для меня это выглядит немного накладно, потому что я хотел бы, чтобы мой автозагрузчик использовался в самом начале поиска, минуя все проверки Zend.

У вас есть идеи по улучшению этого? Как я мог эффективно использовать собственный (и производительный) автозагрузчик в проекте Zend Framework и с помощью Zend_Loader_Autoloader

Ответы [ 2 ]

1 голос
/ 02 января 2012

Хотя этот пост от лидера Zend, Мэтью не отвечает сам по себе, он может оказаться полезным для демонстрации того, как вставить заменяющий автозагрузчик (и более эффективный))

http://mwop.net/blog/262-Backported-ZF2-Autoloaders

1 голос
/ 02 января 2012

Автозагрузчик не "сильно связан".Вы всегда можете использовать любой понравившийся автозагрузчик PSR-0, но в этом случае не следует использовать Zend_Loader_Autoloader для регистрации автозагрузчика в Zend_Loader_Autoloader для замены Zend_Loader_Autoloader;)

spl_autoload_register($myAutoload);
...