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个人网站架设连环讲(一)
Oct 09 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
ThinkPHP调试模式与日志记录概述
Aug 22 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
php给每个段落添加空格的方法
Mar 20 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 09 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 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
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
js验证表单第二部分
2006/11/25 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
js实现无缝轮播图插件封装
2020/07/31 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
历史专业毕业生的自我鉴定
2013/11/15 职场文书
大学生四年生活自我鉴定
2013/11/21 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
建筑结构施工求职信
2014/07/11 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
春节晚会开场白
2015/05/29 职场文书
运动会运动员赞词
2015/07/22 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
Python OpenCV之常用滤波器使用详解
2022/04/07 Python