thinkphp是一款非常優秀的php開發框架,對于web開發的需求截然不同,考慮到模塊化開發思路,thinkphp又提供了一個又一個的實用功能,其中不同模塊表前綴功能甚是值得一提,也是在同一數據庫中部署多個系統的開發者不能錯過的功能之一。
1.為什么在同一個數據庫中部署多個系統
在實際的WEB開發中,通常情況下會碰到一些需要在同一個Web應用程序中集成多個系統的情況,這些系統可能會涉及到業務的不同領域。如果將所有的系統都集成到一個應用程序中,不僅開發難度大,極其容易造成代碼混亂,而且可能導致VIP死鎖情況發生。如此一來,為了保證方便、高效的開發,我們需要在同一數據庫中部署多個系統。
2.ThinkPHP模塊化開發
ThinkPHP采用mvc架構設計,為了更好的解決我們上述問題,我們可以采用模塊化開發思路。所謂模塊化,就是將一個大型的應用程序拆分成若干個互相獨立的模塊,在模塊的設計過程中,我們可以為不同的模塊配備不同的數據庫表前綴,來避免表名之間的沖突。
立即學習“PHP免費學習筆記(深入)”;
3.ThinkPHP模塊化功能特性
ThinkPHP在模塊化開發的過程中,提供了視圖層、控制層、模型層等一系列應用,特別是控制層功能,可以使多個模塊之間交互,互相調用,高效地完成運算,搭建成我們最終的應用程序。控制層是在MVC架構中,連接于業務邏輯層與視圖層之間的一個重要部分,可謂是如魚得水。當然,以上層次之上,還有專門為代碼優化而設計的ThinkPHP路由和緩存兩個實用功能。
4.ThinkPHP不同模塊表前綴設置
對于同一數據庫中不同模塊的表前綴設置,我們只需要在模塊中相應的配置文件中,添加’MODULE的前綴’_TABLE_PREFIX的全局數組變量,并將其加入到數據庫配置的那個數組中即可。
$reslist=M(‘子目錄名稱/Test’)->select();
其中M(”)函數就是模型中的模塊名稱,M的第二個參數就是模塊中的控制器名,select()方法用于查詢數據,其中參數也可不傳2. 解決方法
實例代碼如下所示:
$config=Array(
'DB_TYPE'=>'mysql', 'DB_HOST'=>'localhost', 'DB_USER'=>'root', 'DB_PWD'=>'', 'DB_PORT'=>3306, 'DB_NAME'=>'test2333', 'DB_PREFIX'=>'nov_', 'MODULE_ALLOW_LIST' => array('Home', 'Admin'), 'DEFAULT_MODULE' => 'Home', 'SESSION_PREFIX' => 'api_', 'LOG_RECORD'=>false, 'LOG_TYPE'=> 'Db', 'LOAD_EXT_CONFIG' => 'extconfig',
);
如果此時需要配置一個名稱為“Test”的模塊,并為該模塊設置表前綴,則我們可以在配置文件中,添加如下全局數組變量:
‘MODULE_TEST_TABLE_PREFIX’ => ‘tb_’
如此一來,在使用”$this->M(‘Test/TBid’)->select();”這樣的代碼調用中,ThinkPHP就可以根據前綴區分不同的數據庫表。