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控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
php比较两个绝对时间的大小
Jan 31 PHP
php使用curl存储cookie的示例
Mar 31 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 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连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP实现事件机制的方法
2015/07/10 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
Python备份Mysql脚本
2008/08/11 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python获取任意xml节点值的方法
2015/05/05 Python
Python zip()函数用法实例分析
2018/03/17 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
基于Django统计博客文章阅读量
2019/10/29 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
工作简报范文
2015/07/21 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
MySQL 查询速度慢的原因
2021/05/25 MySQL
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
SQL Server中的游标介绍
2022/05/20 SQL Server
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技