Zend Framework教程之Resource Autoloading用法实例


Posted in PHP onMarch 08, 2016

本文实例讲述了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,具体的资源加载和默认的资源加载使用类似。

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

PHP 相关文章推荐
zend api扩展的php对象的autoload工具
Apr 18 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
May 18 PHP
PHP封装的MSSql操作类完整实例
May 26 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
php查询内存信息操作示例
May 09 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
php bootstrap实现简单登录
Mar 08 #PHP
PHP Echo字符串的连接格式
Mar 07 #PHP
Zend Framework教程之MVC框架的Controller用法分析
Mar 07 #PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 #PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 #PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 #PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 #PHP
You might like
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
javascript验证身份证号
2015/03/03 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
Python fileinput模块使用介绍
2014/11/30 Python
Python正则捕获操作示例
2017/08/19 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
python数据挖掘需要学的内容
2019/06/23 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
jupyter notebook实现显示行号
2020/04/13 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
清洁工表扬信
2014/01/08 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
超市开学活动方案
2014/03/01 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
房屋维修协议书范本
2014/09/25 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android