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脚本的10个技巧(1)
Oct 09 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
关于尾递归的使用详解
May 02 PHP
PHP实现变色验证码实例
Jan 06 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
php单例模式示例分享
Feb 12 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
php smtp实现发送邮件功能
Jun 22 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
PHP getName()函数讲解
Feb 03 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中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
javascript 简练的几个函数
2009/08/29 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
浅谈python3中input输入的使用
2019/08/02 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
十佳家长事迹材料
2014/08/26 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
假期安全教育广播稿
2014/10/04 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
骨干教师考核评语
2014/12/31 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
社区服务活动感想
2015/08/11 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python