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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php文件上传类完整实例
May 14 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 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中eclipse 用空格替换 tab键
2013/06/24 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python3简单实现串口通信的方法
2019/06/12 Python
python是否适合网页编程详解
2019/10/04 Python
Series和DataFrame使用简单入门
2019/11/13 Python
使用Python实现批量ping操作方法
2020/05/06 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
Django 实现图片上传和下载功能
2020/12/31 Python
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
银行员工辞职信范文
2014/01/20 职场文书
运动会解说词200字
2014/02/06 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Django Paginator分页器的使用示例
2021/06/23 Python
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers