当前位置 : 主页 > 网络编程 > PHP >

thinkphp可以根据前缀区分不同的数据表吗

来源:互联网 收集:自由互联 发布时间:2023-08-08
ThinkPHP是一款非常优秀的PHP开发框架,对于WEB开发的需求截然不同,考虑到模块化开发思路,ThinkPHP又提供了一个又一个的实用功能,其中不同模块表前缀功能甚是值得一提,也是在同一

ThinkPHP是一款非常优秀的PHP开发框架,对于WEB开发的需求截然不同,考虑到模块化开发思路,ThinkPHP又提供了一个又一个的实用功能,其中不同模块表前缀功能甚是值得一提,也是在同一数据库中部署多个系统的开发者不能错过的功能之一。

1.为什么在同一个数据库中部署多个系统

在实际的WEB开发中,通常情况下会碰到一些需要在同一个Web应用程序中集成多个系统的情况,这些系统可能会涉及到业务的不同领域。如果将所有的系统都集成到一个应用程序中,不仅开发难度大,极其容易造成代码混乱,而且可能导致VIP死锁情况发生。如此一来,为了保证方便、高效的开发,我们需要在同一数据库中部署多个系统。

2.ThinkPHP模块化开发

ThinkPHP采用MVC架构设计,为了更好的解决我们上述问题,我们可以采用模块化开发思路。所谓模块化,就是将一个大型的应用程序拆分成若干个互相独立的模块,在模块的设计过程中,我们可以为不同的模块配备不同的数据库表前缀,来避免表名之间的冲突。

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就可以根据前缀区分不同的数据库表。

【本文由:高防cdn http://www.558idc.com/gfcdn.html 复制请保留原URL】

上一篇:问题分析:thinkphp能回滚吗
下一篇:没有了
网友评论