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 相关文章推荐
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
php 随机生成10位字符代码
Mar 26 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
php封装一个异常的处理类
Jun 08 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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代码
2010/08/08 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python用户管理系统的实例讲解
2017/12/23 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
用python解压分析jar包实例
2020/01/16 Python
如何用Python绘制3D柱形图
2020/09/16 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
驾驶员岗位职责
2014/01/29 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
运动会100米加油稿
2015/07/21 职场文书
追悼会家属答谢词
2015/09/29 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
Python使用DFA算法过滤内容敏感词
2022/04/22 Python