ThinkPHP3.2.2及以上版本同一应用多模块和多应用多模块的实践

2018-07-16 16:38:38 浏览数 (1)

ThinkPHP3.2.2及以后版本同一应用多模块和多应用多模块的设计已经比以前的版本更加简单快捷。

注:入口文件为index.php,内容为:

入口文件index.php

代码语言:javascript复制
<?php
//  ----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
//  ----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
//  ----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
//  ----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
//  ----------------------------------------------------------------------
 
// 应用入口文件
 
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');
 
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',true);
 
//定义项目名称
define('APP_NAME','Home');
 
// 定义应用目录
define('APP_PATH','./App/');
 
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
 
// 亲^_^ 后面不需要任何代码了 就是如此简单

一、同一应用多模块

方法①

最简单的方法就是此方法,直接在应用目录App下复制Home文件夹,改名为Admin,并修改控制器的应用空间即可,我就是用的此方法。

访问两个模块的地址分别是:

代码语言:javascript复制


http://127.0.0.1:8080/Thinkphp5/index.php/或http://127.0.0.1:8080/Thinkphp5/index.php/Home
http://127.0.0.1:8080/Thinkphp5/index.php/Admin

方法②

在入口文件所在目录新建一个文件admin.php。键入以下代码(和同目录index.php大体相同,只是修改了第7行)

代码语言:javascript复制
<?php
// 应用入口文件
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);
define('BIND_MODULE','Admin');
// 定义应用目录
define('APP_PATH','./Application/');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
// 亲^_^ 后面不需要任何代码了 就是如此简单

然后访问此php文件即可在App目录下自动新建一个Admin模块。

访问两个模块的地址分别是:

访问模块的入口

代码语言:javascript复制
http://127.0.0.1:8080/Thinkphp5/index.php
http://127.0.0.1:8080/Thinkphp5/admin.php

二、多应用多模块

在根目录新建相应的入口文件即可,指定项目名称和应用目录即可。

三、继承公用配置代码的方法

通常一个应用下的多个模块使用部分相同的配置代码,如何实现继承公用的配置文件呢?

方法如下(公用代码以数据库配置代码‘DB_DSN’为例):

在App目录下新建一个config,php文件,贴入以下多模块的公用代码

代码语言:javascript复制

<?php
	return array(
		//'配置项'=>'配置值'
		'DB_PREFIX'=>'tp_',
		'DB_DSN'=>'mysql://root:@localhost:3306/thinkphp',
		
	);
?>

在每个模块单独的配置文件中这样写:

代码语言:javascript复制

<?php
$arr=include './App/config.php';
$arr2=array(
	//'配置项'=>'配置值'
	//此处配置此模块私有的配置
);
 
return array_merge($arr,$arr2);
?>

这样既可实现公用的配置代码。因为thinkphp的配置代码会返回一个数组,使用array_merge方法合并两个数组即可。

四、本文手打,=_=

0 人点赞