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 相关文章推荐
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
拼音码表的生成
Oct 09 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
详解WordPress中给链接添加查询字符串的方法
Dec 18 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
php工具型代码之印章抠图
Jul 18 PHP
thinkphp5实现无限级分类
Feb 18 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 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数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
php实现简单爬虫的开发
2016/03/28 PHP
form自动提交实例讲解
2017/07/10 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python实现log日志的示例代码
2018/04/28 Python
python获取交互式ssh shell的方法
2019/02/14 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python中sys模块是做什么用的
2020/08/16 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
慰问敬老院活动总结
2014/04/26 职场文书
教师年终个人总结
2015/02/11 职场文书
工作态度怎么写
2015/06/25 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers