Zend Framework使用Zend_Loader組件動(dòng)態(tài)加載文件和類(lèi)用法詳解
本文實(shí)例講述了Zend Framework使用Zend_Loader組件動(dòng)態(tài)加載文件和類(lèi)的方法。分享給大家供大家參考,具體如下:
加載文件
Zend_Loader組件可以實(shí)現(xiàn)對(duì)文件的加載功能,還可以判斷文件是否可讀。
這兩個(gè)功能分別由Zend_loader::loadFile()方法與Zend_loader::isReadable()方法來(lái)實(shí)現(xiàn)。
動(dòng)態(tài)加載是可以將變量所指代的文件進(jìn)行加載的過(guò)程。當(dāng)需要加載的文件為用戶(hù)輸入或是某個(gè)方法的參數(shù)時(shí),通過(guò)傳統(tǒng)的加載方法會(huì)很難對(duì)文件進(jìn)行加載。
通過(guò)動(dòng)態(tài)加載則可以實(shí)現(xiàn)這一過(guò)程。
示例:
首先建立被加載的文檔temp.php,該文檔只實(shí)現(xiàn)一個(gè)簡(jiǎn)單的輸出功能,代碼如下。
<?php echo "Hello World!"; ?>
主程序:
<?php require_once("Zend/Loader.php"); $filename = 'temp.php'; Zend_Loader::loadFile($filename);
執(zhí)行結(jié)果:
Hello World!
說(shuō)明文件已經(jīng)被成功的加載進(jìn)來(lái)了。
判斷文件屬性
語(yǔ)法格式:
Zend_Loader::isReadable($filename)
如果文件可讀,程序?qū)⒎祷豑rue
該方法是由PHP函數(shù)is_readable()封裝而成的,但二者還是存在不同之處。is_readable()方法
不會(huì)自動(dòng)查找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下文件不可讀"; }
結(jié)果:
文件temp.php是可讀的! include_path下文件不可讀 include_path下文件可讀
這個(gè)例子說(shuō)明,is_readable()方法不可以判斷include_path文件是否可讀,而Zend_Loader::isReadable()方法可以判斷。include_path文件,指的是php.ini中配置引入的文件。
不僅如此,Zend_Loader還可以進(jìn)行類(lèi)的加載。這將在下面進(jìn)行講解。
動(dòng)態(tài)加載類(lèi)
Zend_Loader不僅可以動(dòng)態(tài)加載文件,通過(guò)其loadClass()方法還可以實(shí)現(xiàn)。
語(yǔ)法:
Zend_Loader::loadClass($class,$dirs)
其中,class為指定的類(lèi)名,class為指定的類(lèi)名,dirs為包含類(lèi)的文件所在的路徑及文件名。類(lèi)名將會(huì)根據(jù)下劃線對(duì)應(yīng)到相應(yīng)目錄下的
PHP文件,如Zend_Controller_Action會(huì)指向Zend/Controller/Action.php。
如果參數(shù)$dirs是一個(gè)字符串或數(shù)組,則該方法會(huì)根據(jù)順序查找相應(yīng)目錄,并加裝第一個(gè)匹配的文件。如果文件不存在,該方法還會(huì)到include_path指定的目錄下進(jìn)行查找。
示例:
<?php require_once("Zend/Loader.php"); Zend_Loader::loadClass('Zend_Date'); $date = new Zend_Date(); echo $date;
結(jié)果:
2013-3-18 下午05:30:16
說(shuō)明,這段代碼直接到include_path中加載需要的類(lèi)。然后實(shí)例化,輸出即可。
更多關(guān)于zend相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Zend FrameWork框架入門(mén)教程》、《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》、《Yii框架入門(mén)及常用技巧總結(jié)》、《ThinkPHP入門(mén)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家基于Zend Framework框架的PHP程序設(shè)計(jì)有所幫助。
- 解決了Ajax、MySQL 和 Zend Framework 的亂碼問(wèn)題
- ZendFramework2連接數(shù)據(jù)庫(kù)操作實(shí)例
- Zend Framework數(shù)據(jù)庫(kù)操作技巧總結(jié)
- Zend Framework入門(mén)應(yīng)用實(shí)例詳解
- Zend Framework前端控制器用法示例
- Zend Framework路由器用法實(shí)例詳解
- Zend Framework分發(fā)器用法示例
- Zend Framework動(dòng)作控制器用法示例
- Zend Framework處理Json數(shù)據(jù)方法詳解
- Zend Framework實(shí)現(xiàn)自定義過(guò)濾器的方法
- WINDOWS + WAMP + Zend Framework 配置步驟分享
- Zend Framework框架中實(shí)現(xiàn)Ajax的方法示例
相關(guān)文章
PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例
這篇文章主要介紹了PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例,本文講解了目標(biāo)、角色、應(yīng)用場(chǎng)景、優(yōu)勢(shì)等內(nèi)容,并給出代碼實(shí)例,需要的朋友可以參考下2015-05-05php+mysql+ajax 局部刷新點(diǎn)贊/取消點(diǎn)贊功能(每個(gè)賬號(hào)只點(diǎn)贊一次)
這篇文章主要介紹了php+mysql+ajax 局部刷新點(diǎn)贊/取消點(diǎn)贊功能(每個(gè)賬號(hào)只點(diǎn)贊一次),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07smarty模板引擎使用內(nèi)建函數(shù)foreach循環(huán)取出所有數(shù)組值的方法
這篇文章主要介紹了smarty模板引擎使用內(nèi)建函數(shù)foreach循環(huán)取出所有數(shù)組值的方法,實(shí)例分析了foreach循環(huán)遍歷數(shù)組的幾種常用技巧,需要的朋友可以參考下2015-01-01PHP爬蟲(chóng)之百萬(wàn)級(jí)別知乎用戶(hù)數(shù)據(jù)爬取與分析
這篇文章主要介紹了PHP百萬(wàn)級(jí)別知乎用戶(hù)數(shù)據(jù)爬取與分析的相關(guān)資料,需要的朋友可以參考下2016-01-01thinkphp3.2實(shí)現(xiàn)跨控制器調(diào)用其他模塊的方法
這篇文章主要介紹了thinkphp3.2實(shí)現(xiàn)跨控制器調(diào)用其他模塊的方法,結(jié)合實(shí)例形式分析了thinkPHP跨模塊、跨控制器調(diào)用方法的常見(jiàn)操作技巧,需要的朋友可以參考下2017-03-03PHP判斷來(lái)訪是搜索引擎蜘蛛還是普通用戶(hù)的代碼小結(jié)
這篇文章主要介紹了PHP判斷來(lái)訪是搜索引擎蜘蛛還是普通用戶(hù)的代碼小結(jié),多種方法總有一種適合你,防止搜索引擎蜘蛛拖死搜索引擎2015-09-09