The example in this article describes the usage of Resource Autoloading in Zend Framework. Share it with everyone for your reference, the details are as follows:
Usually, when developing applications, the class file name may not be defined according to the standard Zend Framework recommendations, which means that your class file cannot be automatically loaded by the loader Discover. Zend_Loader_Autoloader_Resource provides the solution.
A resource is just a name corresponding to a component's namespace (namespace appended to the autoloader) and path (relative to the base path of the autoloader). For example, it can be like this:
$loader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Blog', 'basePath' => APPLICATION_PATH . '/modules/blog', ));
The specific examples are as follows:
path/to/some/resources/
|-- forms/
| `-- Guestbook.php / / Foo_Form_Guestbook
|-- models/
| |-- DbTable/
| | `-- Guestbook.php // Foo_Model_DbTable_Guestbook
| |-- Guestbook.php // Foo_Model_Guestbook
| `-- GuestbookMapper.php // Foo_Model_GuestbookMapper
Create resource loader:
$loader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => 'path/to/some/resources/', 'namespace' => 'Foo', ));
Define resource type
Zend_Loader_Autoloader_Resourse: :addResourceType() has three parameters: resource name, relative resource path name of the specified resource path, and resource type component prefix.
In the above tree, we have three resource types: form (in the subdirectory forms, the resource prefix is Form), model (in the subdirectory models, the resource prefix is Model), and dbtable (in the subdirectory models, the resource prefix is Model) In the directory "models/DbTable", the resource prefix is "Model_DbTable").
The specific definition is as follows:
$loader->addResourceType('form', 'forms', 'Form') ->addResourceType('model', 'models', 'Model') ->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');
You can also specify
$resourceLoader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => 'path/to/some/directory', 'namespace' => 'My', 'resourceTypes' => array( 'acl' => array( 'path' => 'acls/', 'namespace' => 'Acl', ), 'form' => array( 'path' => 'forms/', 'namespace' => 'Form', ), 'model' => array( 'path' => 'models/', 'namespace' => 'Model', ), ), ));
in the constructor
Use to define resources
$form = new Foo_Form_Guestbook(); $guestbook = new Foo_Model_Guestbook();
Resources in modules are automatically loaded
Zend Framework's MVC encourages the use of "modules", Modules usually have some resource type by default, and Zend Framework provides a standard directory layout for modules. In this paradigm, resource autoloaders are very useful and they are enabled by default.
Basic directory structure of the module:
d2397dd86d29a9a1cff681f5f46c559c
configs/
application.ini
controllers/
helpers/
forms/
layouts/
filters/
helpers/
scripts/
models/
services/
filters/
of of off’s’’’’’ ’’’’'''''’’’’’’’’’’’’’’’’’’’’’’’’’'''''''''''''''‐‐''''' through through‐' through through through through through through through‐‐‐‐‐ to # Bootstrap.php
You can extend Zend_Application_Module_Bootstrap to create a module boot class Bootstrap.php. The specific resource loading is similar to the default resource loading.