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 相关文章推荐
PHP排序算法的复习和总结
Feb 15 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
php 获取SWF动画截图示例代码
Feb 10 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python中的self用法详解
2019/08/06 Python
python打开使用的方法
2019/09/30 Python
Python简单实现区域生长方式
2020/01/16 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
办护照工作证明范本
2014/01/14 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
2014年财政局工作总结
2014/12/09 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
保护动物的宣传语
2015/07/13 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang