Posts Tagged ‘Loader’

Autoload своих библотек в Zend Framework 1.8+

Posted in Development, PHP, Tips And Tricks, ZendFramework on December 11th, 2009 by Yaroslav Vorozhko – Be the first to comment

Чтоб загружать в Zend Framework свои библиотеки, нам надо сделать следующее:
Первое - это добавить физический путь к библиотеке в include_path.
Второе - это указать префикс классов библиотеки, если такой вообще используется.

Добавить путь в include_path можно двумя способами:
1. Жетско прописать путь в public/index.php файле:

CODE:
  1. set_include_path(implode(PATH_SEPARATOR, array(
  2.     realpath(APPLICATION_PATH . '/../library'),
  3.     realpath(APPLICATION_PATH . '/../mylib'),
  4.     get_include_path(),
  5. )));

2. Прописать путь в конфигруационном файле application/configs/application.ini

CODE:
  1. includePaths.mylib = APPLICATION_PATH "/../mylib"

В обоих случаях мы добавляем путь к mylib в include_path. Второй способ более предпочтительный, так как на основе выбранной конфигурации (production, develeopment, test) можно устанавливать путь к различным версиям mylib.
Кстати используя этот же прием, можно устанавливать путь и к каталогу library/Zend и на основе конфигураций подгружать различный версии Zend Framework.

И так, второе что нам необходимо сделать - это подключить автозагрузчик и установить префикс используемый классами библиотеки.
Я прописал автозагрузчик в файле public/index.php

CODE:
  1. require_once 'Zend/Loader/Autoloader.php';
  2. $loader = Zend_Loader_Autoloader::getInstance();
  3. $loader->registerNamespace('My_');

В данном случае префикс классов в моей библиотеки "My_".

Также, этот же код можно прописать и в классе Bootstrap.php

CODE:
  1. protected function _initAutoload()
  2.     {
  3.         require_once 'Zend/Loader/Autoloader.php';
  4.         $loader = Zend_Loader_Autoloader::getInstance();
  5.         $loader->registerNamespace('My');
  6.     }

Все, теперь ZF знает как загружать классы из вашей бибилиотеки.