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