本文实例讲述了Zend Framework中Resource Autoloading用法。分享给大家供大家参考,具体如下:

通常,在开发应用程序中,可能类文件名不能按照标准Zend Framework的建议定义的,这意味着你的类文件不能被自动加载器发现。Zend_Loader_Autoloader_Resource提供了解决方案。

资源仅仅是一个名称对应一个组件的命名空间(追加到自动加载器的命名空间)和路径(相对的自动加载器的基本路径),例如可以这样:

$loader = new Zend_Application_Module_Autoloader(array(  "namespace" => "Blog",  "basePath" => APPLICATION_PATH . "/modules/blog",));

具体实例如下:

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

创建资源装载器:

$loader = new Zend_Loader_Autoloader_Resource(array(  "basePath" => "path/to/some/resources/",  "namespace" => "Foo",));

定义资源类型

Zend_Loader_Autoloader_Resourse::addResourceType()有三个参数:资源名称,指定的资源路径的相对资源路径名, 资源类型组件前缀。

在上面的树,我们有三种资源类型:form(在子目录forms中,资源前缀是Form),model(在子目录models中,资源前缀是Model),并dbtable(在子目录“models/DbTable”中,资源前缀是“Model_DbTable”)。

具体定义如下:

$loader->addResourceType("form", "forms", "Form")    ->addResourceType("model", "models", "Model")    ->addResourceType("dbtable", "models/DbTable", "Model_DbTable");

也可以在构造函数中指定

$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",    ),  ),));

使用以定义资源

$form   = new Foo_Form_Guestbook();$guestbook = new Foo_Model_Guestbook();

模块中的资源自动加载

Zend Framework的MVC鼓励使用“modules”,模块默认情况下,通常有一些资源类型,Zend Framework提供了一个模块的标准目录布局。在这种范式中,资源自动加载器非常有用,他们是默认启用的。

模块的基本目录结构:

<modulename>    configs/        application.ini    controllers/        helpers/    forms/    layouts/        filters/        helpers/        scripts/    models/    services/    views/        filters/        helpers/        scripts/    Bootstrap.php

你可以扩展Zend_Application_Module_Bootstrap创建一个模块引导类 Bootstrap.php,具体的资源加载和默认的资源加载使用类似。

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。