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&amp;mysql(二)
Oct 09 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
php中动态调用函数的方法
Mar 16 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP7 参数处理机制修改
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+MySQL 制作简单的留言本
2009/11/02 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
2013/06/06 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
PHP基础知识介绍
2013/09/17 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
HTML Dom与Css控制方法
2010/10/25 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
JQuery导航菜单选择特效
2016/04/11 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
详解微信UnionID作用
2019/05/15 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
python 实现插入排序算法
2012/06/05 Python
Python标准库之sqlite3使用实例
2014/11/25 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python flask框架post接口调用示例
2019/07/03 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
八一建军节部队活动方案
2014/02/04 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
重点工程汇报材料
2014/08/27 职场文书
教代会开幕词
2015/01/28 职场文书
导游词之河北邯郸
2019/09/12 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript
python中使用redis用法详解
2022/12/24 Redis