本文實例講述了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相關內容感興趣的讀者可查看本站專題:《Zend FrameWork框架入門教程》、《php優秀開發框架總結》、《Yii框架入門及常用技巧總結》、《ThinkPHP入門教程》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家基於Zend Framework框架的PHP程序設計有所幫助。