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 相关文章推荐
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Python os模块介绍
2014/11/30 Python
简介Django框架中可使用的各类缓存
2015/07/23 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
python爬虫工具例举说明
2020/11/30 Python
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
J2EE面试题
2016/03/14 面试题
大学生求职中的自我评价
2013/10/01 职场文书
顶撞领导检讨书
2014/01/29 职场文书
电子银行营销方案
2014/02/22 职场文书
事业单位考核材料
2014/05/21 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
python使用shell脚本创建kafka连接器
2022/04/29 Python