这篇文章将为大家详细讲解有关thinkphp配置配置多应用多配置的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
,,,,,,,,,,,,,,,,,,,,,,,,,,,,
<强>多模块强>
在ThinkPHP 3.2.3中,默认的应用目录是。/应用程序,下面的默认模块是国内模块,如果此时需要添加一个管理模块用于后台应用,在默认的入口文件。/索引。php中添加:
//,绑定管理模块到当前入口文件 定义(& # 39;BIND_MODULE& # 39;, & # 39;行政与# 39;);
此时运行http://serverNmae/index。php,会在。/应用目录下生成一个管理模块。但是此时访问http://serverName/index。php,实际上访问的是新添加的管理模块,即使在。/Applicaition/共同/Conf/配置。php中添加
//设置默认模块 & # 39;DEFAULT_MODULE& # 39;,,,,=祝辞,,& # 39;回家# 39;
也无法正确定位到家里模块。
实际上手册中提到到的在入口文件定义BIND_MODULE的实际含义是定义默认模块。参见:/ThinkPHP/图书馆/认为/Dispatcher.calss。php,该文件定义了ThinkPHP内置的调度器类,用于完成URL解析,路由和调度(参见手册中的“系统流程”一节),其中:140
//,获取模块名称 定义(& # 39;MODULE_NAME # 39;,,定义(& # 39;BIND_MODULE& # 39;) ?, BIND_MODULE ::,:: getModule (varModule美元));
在静态方法调度中,模块名称的获取首先会在入口文件中查询是否有定义BIND_MODULE,如果有定义,则定义MODULE_NAME的值为定义的BIND_MODULE的值,否则调用该类中的静态私有方法getModule来获取实际的模块名称:
/* * ,,,,*,获得实际的模块名称 ,,,*/,,,static private function getModule ($ var), { ,,,,,,,module 美元;,,=,(!空($ _GET [$ var]) ? $ _GET [$ var]: C (& # 39; DEFAULT_MODULE& # 39;)); ,,,,,,,设置($ _GET [$ var]); ,,,,,,,如果($ maps =, C (& # 39; URL_MODULE_MAP& # 39;)), { ,,,,,,,,,,,如果(收取($地图(函数模块($)))),{ ,,,,,,,,,,,,,,,//,记录当前别名 ,,,,,,,,,,,,,,,定义(& # 39;MODULE_ALIAS& # 39;函数(模块)美元); ,,,,,,,,,,,,,,,//,获取实际的模块名 ,,,,,,,,,,,,,,,,,,return  ucfirst($地图[MODULE_ALIAS]); ,,,,,,,,,,,}elseif(函数(函数(模块)美元,美元地图)){ ,,,,,,,,,,,,,,,//,禁止访问原始模块 ,,,,,,,,,,,,,,,,,,return  & # 39; & # 39;; ,,,,,,,,,,,} ,,,,,,,} ,,,,,,,return strip_tags (ucfirst(函数(模块)美元)); ,,,}
该方法中,如果URL中不包含配置文件重定义的VAR_MODULE(默认为m,在。/ThinkPHP/Conf/公约。php中)的值,则找配置文件中定义的DEFAULT_MODULE的值。
通过以上分析,得出BIND_MODULE实际上是定义默认模块,如果在项目中有多个模块的话,不要这样配置。
如果此时注释默认入口文件。/索引。php中的BIND_MODULE(即采用默认的入口文件配置),那么直接访问http://serverName/admin就可以访问管理模块,因为在该入口文件中,定义了应用目录。/应用程序,那么访问http://serverName/admin实际就是访问了。/应用程序/管理/控制器/IndexController.class。php中索引的方法。
ThinkPHP 3.2.3采用这种方式配置多模块就可以了,无需在入口文件和配置文件中另作定义,这也是ThinkPHP官方推荐的分组模式。
另外一种配置就是多入口设计,即在默认入口文件索引。php的同级创建管理。php,同时在索引。php中添加:
//,绑定家模块到当前入口文件 定义(& # 39;BIND_MODULE& # 39;, & # 39;回家# 39;);
在管理。php中采用和索引。php相同的配置,除了BIND_MODULE的定义,将BIND_MODULE的定义改为:
//,绑定管理模块到当前入口文件 定义(& # 39;BIND_MODULE& # 39;, & # 39;行政与# 39;);
然后在应用配置文件。/应用程序/共同/Conf/配置。php中添加:
//设置默认模块 & # 39;DEFAULT_MODULE& # 39;,,,,=祝辞,,& # 39;回家# 39;,
此时访问http://serverName/index。php就能访问家里模块,访问http://servername/admin。php,就能访问管理模块,而无法访问http://serverName/admin,因为此索引时。php只能访问家里模块。
<强>多应用强>
通常情况下ThinkPHP 3.2.3无需使用多应用模式,因为大多数情况下都可以通过多模块化以及多入口的设计来解决应用的扩展需求。
如果一定要使用多应用模式,例如创建应用Application_API,那么可以在。/应用程序同级目录下创建目录Applicaiton_API,同时增加入口文件。/api。php将应用目录指向。/Application_API: