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
关于时间计算的结总
Dec 06 PHP
菜鸟学PHP之Smarty入门
Jan 04 PHP
php 归并排序 数组交集
May 10 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
如何用PHP websocket实现网页实时聊天
May 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方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
DWR Ext 加载数据
2009/03/22 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
你应该知道的python列表去重方法
2017/01/17 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
办公室主任岗位职责
2013/11/08 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
陈欧的广告词
2014/03/18 职场文书
我们的节日中秋活动方案
2014/08/19 职场文书
小学庆六一活动总结
2014/08/28 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
实习协议书范本
2014/09/25 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
小学中队委竞选稿
2015/11/20 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
python flask框架快速入门
2021/05/14 Python
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
pandas进行数据输入和输出的方法详解
2022/03/23 Python
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python