• 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为指定的类名,$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中加载需要的类。然后实例化,输出即可。

  • 相关阅读:
    用VS2003调试ASP的方法和体会
    InterDev 调试错误信息: Unable to set server into correct debugging state automatically....的解决办法
    如何在程序里使用代码关闭由MessageBox()弹出的对话框?
    统计数字小程序
    计数程序
    C(读入字符串,转换为int型并做加法操作)
    c数据类型简记
    define使用
    统计数字小程序
    计数程序
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/2966397.html
Copyright © 2020-2023  润新知