Zend Framework使用Zend_Loader组件动态加载文件和类用法详解


Posted in PHP onDecember 09, 2016

本文实例讲述了Zend Framework使用Zend_Loader组件动态加载文件和类的方法。分享给大家供大家参考,具体如下:

加载文件

Zend_Loader组件可以实现对文件的加载功能,还可以判断文件是否可读。

这两个功能分别由Zend_loader::loadFile()方法与Zend_loader::isReadable()方法来实现。

动态加载是可以将变量所指代的文件进行加载的过程。当需要加载的文件为用户输入或是某个方法的参数时,通过传统的加载方法会很难对文件进行加载。

通过动态加载则可以实现这一过程。

示例:

首先建立被加载的文档temp.php,该文档只实现一个简单的输出功能,代码如下。

<?php
echo "Hello World!";
?>

主程序:

<?php
require_once("Zend/Loader.php");
$filename = 'temp.php';
Zend_Loader::loadFile($filename);

执行结果:

Hello World!

说明文件已经被成功的加载进来了。

判断文件属性

语法格式:

Zend_Loader::isReadable($filename)

如果文件可读,程序将返回True

该方法是由PHP函数is_readable()封装而成的,但二者还是存在不同之处。is_readable()方法

不会自动查找include_path目录下的文件,而Zend::isReadable()方法则可以。

示例:

<?php
require_once("Zend/Loader.php");
$filename = 'temp.php';
if(Zend_Loader::isReadable($filename)){
  echo "文件".$filename."是可读的!";
}else{
  echo "文件".$filename."不可读!";
}
echo "<p/>";
if(is_readable('Zend/Date.php')){
  echo "include_path下文件可读";
}else{
  echo "include_path下文件不可读";
}
echo "<p/>";
if(Zend_Loader::isReadable('Zend/Date.php')){
  echo "include_path下文件可读";
}else{
  echo "include_path下文件不可读";
}

结果:

文件temp.php是可读的!
include_path下文件不可读
include_path下文件可读

这个例子说明,is_readable()方法不可以判断include_path文件是否可读,而Zend_Loader::isReadable()方法可以判断。include_path文件,指的是php.ini中配置引入的文件。

不仅如此,Zend_Loader还可以进行类的加载。这将在下面进行讲解。

动态加载类

Zend_Loader不仅可以动态加载文件,通过其loadClass()方法还可以实现。

语法:

Zend_Loader::loadClass($class,$dirs)

其中,class为指定的类名,class为指定的类名,dirs为包含类的文件所在的路径及文件名。类名将会根据下划线对应到相应目录下的

PHP文件,如Zend_Controller_Action会指向Zend/Controller/Action.php。

如果参数$dirs是一个字符串或数组,则该方法会根据顺序查找相应目录,并加装第一个匹配的文件。如果文件不存在,该方法还会到include_path指定的目录下进行查找。

示例:

<?php
require_once("Zend/Loader.php");
Zend_Loader::loadClass('Zend_Date');
$date = new Zend_Date();
echo $date;

结果:

2013-3-18 下午05:30:16

说明,这段代码直接到include_path中加载需要的类。然后实例化,输出即可。

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用php写的serv-u的web申请账号的程序
Oct 09 PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
PHP自动生成表单代码分享
Jun 19 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
PHP 根据key 给二维数组分组
Dec 09 #PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 #PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 #PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 #PHP
Zend Framework实现自定义过滤器的方法
Dec 09 #PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 #PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 #PHP
You might like
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php session 检测和注销
2009/03/16 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
javascript基本算法汇总
2016/03/09 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Django跨域请求原理及实现代码
2020/11/14 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
python 实现IP子网计算
2021/02/18 Python
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
五一服装活动方案
2014/01/11 职场文书
活动总结怎么写啊
2014/05/07 职场文书
团队拓展活动方案
2014/08/28 职场文书
校长个人总结
2015/03/03 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
python文件与路径操作神器 pathlib
2022/04/01 Python