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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php页面防重复提交方法总结
Nov 25 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
php微信公众号开发之快递查询
Oct 20 PHP
PHP strripos函数用法总结
Feb 11 PHP
tp5框架的增删改查操作示例
Oct 31 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.MVC的模板标签系统(四)
2006/09/05 PHP
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
javascript IFrame 强制刷新代码
2009/07/23 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Angular4编程之表单响应功能示例
2017/12/13 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
pandas string转dataframe的方法
2018/04/11 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
pandas的resample重采样的使用
2020/04/24 Python
python集合的新增元素方法整理
2020/12/07 Python
MYSQL支持事务吗
2013/08/09 面试题
大学生工作推荐信范文
2013/12/02 职场文书
给学校的建议书
2014/03/12 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
初中数学教学反思范文
2016/02/17 职场文书