資源描述:
《thinkphp擴(kuò)展指南》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、ThinkPhp擴(kuò)展指南擴(kuò)展指南ThinkPHP是一個(gè)輕量級(jí)的WEB應(yīng)用開發(fā)框架,也就意味著自身并沒有龐大的外圍應(yīng)用類庫,也不可能僅僅通過核心來解決百分百的應(yīng)用需求,而這些完全可以通過系統(tǒng)內(nèi)建的擴(kuò)展機(jī)制來擴(kuò)展和完善。下面我們會(huì)詳細(xì)介紹如何對(duì)你的ThinkPHP應(yīng)用在不修改核心的情況下進(jìn)行輕松的擴(kuò)展。基類庫擴(kuò)展ThinkPHP的基類庫目錄位于ThinkPHPLib,默認(rèn)的基類庫只包含Think類庫包。系統(tǒng)基類庫可以很方便的進(jìn)行擴(kuò)展,目前支持的類庫包包括ORG(第三方公共類庫包)和Com(企業(yè)類庫包)。你可以在ORG類庫目錄下面添加自己需要的類庫(ThinkPHP基類庫的所有類庫文
2、件統(tǒng)一使用class.php作為后綴,并且文件名和類名相同),你甚至還可以創(chuàng)建屬于自己企業(yè)的類庫,只需要在ThinkPHPLib目錄下面創(chuàng)建Com目錄,然后在里面增加相應(yīng)的類庫就可以方便的使用import方法導(dǎo)入了。例如,我們?cè)赥hinkPHPLibCom下面創(chuàng)建了Sina目錄,并且放了UtilUnitTest.class.php類庫文件,可以使用下面的方式導(dǎo)入import('Com.Sina.Util.UnitTest');應(yīng)用類庫擴(kuò)展項(xiàng)目類庫的擴(kuò)展,和基類庫的擴(kuò)展一樣,我們可以在項(xiàng)目類庫目錄增加你想要的子目錄,例如,我們?cè)贛yApp的項(xiàng)目目錄下面增加Common和
3、Util目錄,就可以這樣加載這些目錄下面的類庫文件了:import('MyApp.Util.UnitTest');import('@.Common.CommonUtil');第三方類庫擴(kuò)展如果你直接使用的是第三方的類庫包,或者是類名和后綴和ThinkPHP的默認(rèn)規(guī)則不符合的,我們建議你放到ThinkPHPVendor目錄下面,并使用vendor方法來導(dǎo)入。例如,我們把Zend的FilterDir.php放到Vendor目錄下面,這個(gè)時(shí)候Dir文件的路徑就是VendorZendFilterDir.php,我們使用vendor方法導(dǎo)入就是:Vendor('Zend.Filt
4、er.Dir');應(yīng)用擴(kuò)展應(yīng)用擴(kuò)展是指不改變現(xiàn)有底層框架的基礎(chǔ)上,對(duì)App類進(jìn)行額外的功能擴(kuò)展,系統(tǒng)使用了標(biāo)簽擴(kuò)展的方式。要啟用應(yīng)用擴(kuò)展支持,必須在項(xiàng)目配置文件里面開啟APP_PLUGIN_ON配置參數(shù)。'APP_PLUGIN_ON'=>true,一旦開啟后,系統(tǒng)就會(huì)檢查下面的標(biāo)簽:2app_begin:應(yīng)用開始標(biāo)簽2app_init:應(yīng)用初始化標(biāo)簽2app_run:應(yīng)用執(zhí)行標(biāo)簽2app_end:應(yīng)用結(jié)束標(biāo)簽以上是系統(tǒng)的App應(yīng)用類內(nèi)置的一些標(biāo)簽位置,在每個(gè)定義的標(biāo)簽位置,都會(huì)執(zhí)行一個(gè)tag方法來調(diào)用該標(biāo)簽位置需要執(zhí)行的方法,例如:我們可以看到,標(biāo)簽的執(zhí)行只是一個(gè)很簡(jiǎn)單的代碼,例
5、如://執(zhí)行應(yīng)用初始化標(biāo)簽tag('app_init');系統(tǒng)執(zhí)行到這里的時(shí)候,會(huì)自動(dòng)檢查標(biāo)簽所對(duì)應(yīng)要執(zhí)行的方法,并且依次執(zhí)行。標(biāo)簽對(duì)應(yīng)的執(zhí)行方法是通過標(biāo)簽配置定義文件,在項(xiàng)目的配置目錄下面增加tags.php文件,寫入:returnarray(//定義項(xiàng)目初始化標(biāo)簽要執(zhí)行的方法'app_init'=>array('function1','function2',array('class1','method1')...),...//其他的標(biāo)簽);如果某個(gè)標(biāo)簽位置需要傳入額外的參數(shù),可以使用tag('app_init',$data);會(huì)自動(dòng)傳入要執(zhí)行的方法,注意參數(shù)必須一致才能準(zhǔn)確調(diào)
6、用。應(yīng)用標(biāo)簽擴(kuò)展的方式,其實(shí)可以延伸到項(xiàng)目中,我們可以在項(xiàng)目的某些位置手動(dòng)插入標(biāo)簽位,然后定義外部的標(biāo)簽擴(kuò)展來執(zhí)行。根據(jù)這樣的一個(gè)原理,標(biāo)簽擴(kuò)展可以隨意定制。你需要做的僅僅是在需要執(zhí)行的位置加上tag('標(biāo)簽名稱'[,'可選參數(shù)'…])即可,然后在tags.php文件里面定義好各個(gè)標(biāo)簽要執(zhí)行的方法,其他的事情系統(tǒng)會(huì)自動(dòng)處理。模塊擴(kuò)展模塊擴(kuò)展可以使得項(xiàng)目方便的動(dòng)態(tài)掛載模塊,動(dòng)態(tài)模塊只需要在項(xiàng)目配置目錄下面定義模塊定義文件modules.php,定義格式為:returnarray('moduleName'=>array('導(dǎo)入路徑'[,'類名']),);例如,我們定于了一個(gè)名稱為Ex
7、tend的擴(kuò)展模塊,其模塊類的文件路徑位于項(xiàng)目的LibModulesExtendAction.class.php,那么定義如下:returnarray('Extend'=>array('@.Modules.Extend'),);一般情況下,類名無需指定,會(huì)按照默認(rèn)的規(guī)則去找,如果你的類名和系統(tǒng)規(guī)則不一致,就需要指定類名,假如模塊文件名是Extend.class.php:returnarray('Extend'=>array('@.Modules.Extend','Extend