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 相关文章推荐
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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 中执行系统外部命令
2006/10/09 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
php抓取https的内容的代码
2010/04/06 PHP
解析php入库和出库
2013/06/25 PHP
PHP网络操作函数汇总
2015/05/18 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
四风问题自查报告剖析材料
2014/02/08 职场文书
高一军训决心书
2015/02/05 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
追悼会答谢词范文
2015/09/29 职场文书
工伤调解协议书
2016/03/21 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL