2.4 Автозагрузка в Zend Framework. Ресурс Autoloading

Zend, “Autoloading in Zend Framework. Resource Autoloading”, public translation into Russian from English More about this translation.

Translate into another language.

Часто, при разработке приложений, бывает довольно сложно оформить класс, что бы он 1:1 соответствовал имя_класса:имя_файла, (согласно рекомендациям Zend Framework), либо бывает выгодно этого не делать. Однако, это приведет к тому, что ваши файлы классов не будут найдены автозагрузчиком.

Если вы прочли «Цели и архитектура» автозагрузчика, то знаете, что в последнем пункте этого раздела обозначено, что решение должно покрывать такую ситуацию. В Zend Framework это достигается с помощью Zend_Loader_Autoloader_Resource.

Ресурс — это только имя, которое соответствует пространству имен компонента (которое добавляется к пространству имен автозагрузчика) и путь (который является относительным к базовому пути автозагрузчика). На практике вы будете делать нечто подобное:

01. $loader = new Zend_Application_Module_Autoloader(array(

02. 'namespace' => 'Blog',

03. 'basePath' => APPLICATION_PATH . '/modules/blog',

04. ));

Когда загрузчик определен, вы должны сообщить ему о различных типах ресурсов, о которых он должен знать. Эти типы ресурсов являются простыми парами, состоящими из поддерева и префикса.

В качестве примера рассмотрим следующее дерево:

01. path/to/some/resources/

02. |-- forms/

03. | `-- Guestbook.php // Foo_Form_Guestbook

04. |-- models/

05. | |-- DbTable/

06. | | `-- Guestbook.php // Foo_Model_DbTable_Guestbook

07. | |-- Guestbook.php // Foo_Model_Guestbook

08. | `-- GuestbookMapper.php // Foo_Model_GuestbookMapper

Первый шаг — создание загрузчика ресурсов:

01. $loader = new Zend_Loader_Autoloader_Resource(array(

02. 'basePath' => 'path/to/some/resources/',

03. 'namespace' => 'Foo',

04. ));

Затем нужно определить несколько типов ресурсов.
Zend_Loader_Autoloader_Resourse::addResourceType() имеет три аргумента: «тип» ресурса (произвольная строка), путь относительно базового пути, по которому тип ресурса может быть найден, и префикс компонента для пользования типа ресурса. В вышеуказанном дереве, имеется три типа ресурсов: form (в поддиректории «forms», с префиксом компонента «Form»), model (в поддиректории «models», с префиксом компонента «Model») и dbtable (в поддиректории «models/DbTable», с префиксом компонента «Model_DbTable»). Мы определим их следующим образом:

01. $loader->addResourceType('form', 'forms', 'Form')

02. ->addResourceType('model', 'models', 'Model')

03. ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');

После определения, можно просто использовать эти классы:

01. $form = new Foo_Form_Guestbook();

02. $guestbook = new Foo_Model_Guestbook();

    Примечание: Автозагрузка ресурсов модулей

    MVC в Zend Framework поощряет использование «модулей», которые являются независимыми (автономными) приложениями внутри вашего сайта. Модули обычно имеют несколько типов ресурсов по умолчанию, и Zend Framework рекомендует стандартную структуру директорий для модулей. Поэтому автозагрузчик ресурсов является достаточно полезным в этой парадигме — настолько полезными, что они включены по умолчанию, когда вы создаете класс загрузчика (bootstrap class) для вашего модуля, который расширяет Zend_Application_Module_Bootstrap. Чтобы получить больше информации, прочтите документацию по Zend_Loader_Autoloader_Module.

Original (English): Autoloading in Zend Framework. Resource Autoloading

Translation: © Ismet, antdmi .

translatedby.com crowd

Like this translation? Share it or bookmark!