问题:为什么要实现这个功能?
答:因为在写接口文档的时候,发现了如下图所示:
有轻度强迫症的我,迫切想把这一坨控制器放到一起,然后命名为C2c。
于是,就有了这篇博客。
PS:TP3并未原生支持一二级自动匹配控制器,而考虑到不影响原有的接口,所以才有这样的需求。
思路是:设置默认控制器层级为2,然后写代码简单实现兼容原先的一级。
实现如下:
PS:可能不是很优雅,目前暂时还未发现有问题,如果有问题,欢迎留言补充,或者我遇到问题会来更新这篇博文。
1、找到\ThinkPHP\Library\Think\Dispatcher.class.php,修改如下代码
private static function getController(&$paths, $urlCase)
{
...
if ($paths) {
/*
* 此处修改为2级内自适应 by lee 20190214
* 先判断是否存在控制器
*/
$old_paths=$paths;
// PATH_INFO检测标签位
Hook::listen('path_info');
if (C('CONTROLLER_LEVEL') > 1) {// 控制器层次
$controller = implode('/', array_slice($paths, 0, C('CONTROLLER_LEVEL')));