tp5.0.11学习--目录结构

来源:互联网 发布:淘宝店铺数据分析表格 编辑:程序博客网 时间:2024/06/03 02:35

tp5.0.11学习记录之目录结构

~~~www  WEB部署目录(或者子目录)├─application           应用目录│  ├─common             公共模块目录(可以更改)│  ├─module_name        模块目录│  │  ├─config.php      模块配置文件│  │  ├─common.php      模块函数文件│  │  ├─controller      控制器目录│  │  ├─model           模型目录│  │  ├─view            视图目录│  │  └─ ...            更多类库目录│  ├─templates          应用模板文件│  │  └─module_name    模块目录(里面放改模块的html文件即视图)│  ├─command.php        命令行工具配置文件│  ├─common.php         公共函数文件│  ├─config.php         公共配置文件│  ├─route.php          路由配置文件│  ├─tags.php           应用行为扩展定义文件│  └─database.php       数据库配置文件│├─public                WEB目录(对外访问目录)│  ├─index.php          入口文件│  ├─router.php         快速测试文件│  └─.htaccess          用于apache的重写│├─thinkphp              框架系统目录│  ├─lang               语言文件目录│  ├─library            框架类库目录│  │  ├─think           Think类库包目录│  │  └─traits          系统Trait目录│  ││  ├─tpl                系统模板目录│  ├─base.php           基础定义文件│  ├─console.php        控制台入口文件│  ├─convention.php     框架惯例配置文件│  ├─helper.php         助手函数文件│  ├─phpunit.xml        phpunit配置文件│  └─start.php          框架入口文件│├─extend                扩展类库目录├─runtime               应用的运行时目录(可写,可定制)├─vendor                第三方类库目录(Composer依赖库)├─build.php             自动生成定义文件(参考)├─composer.json         composer 定义文件├─LICENSE.txt           授权说明文件├─README.md             README 文件├─think                 命令行入口文件~~~

这是tp5的目录结构(关于结构的介绍网上有很多大神的blog,本菜鸟也去膜拜了一番.在此只是对自己学习的过程坐下记录,毕竟好记性不如烂笔头!)
因为原本的结构是每个模块下都有一个view(视图)目录,虽然很容易理解,但看起来就是觉得怪怪的(大概是我有点强迫症吧!).现已将视图统一到templates目录下.其下的每个目录对应上面的模块(如:index,admin),里面就可以放自己的模板文件了,看起来顺眼了些有木有!
在这个我去改造了下thinkphp\library\think\view\driver\Think.php这个文件下的parseTemplate(自动定位模板文件)这个方法[注:当然这是取巧的做法,最好你自己在需要的地方去继承该类并重写此方法.]不废话,请看下面代码片段:

// if (0 !== strpos($template, '/')) {        //     $template   = str_replace(['/', ':'], $depr, $template);        //     $controller = Loader::parseName($request->controller());        //     echo $controller;        //     if ($controller) {        //         if ('' == $template) {        //             // 如果模板文件名为空 按照默认规则定位        //             $template = str_replace('.', DS, $controller) . $depr . $request->action();        //         } elseif (false === strpos($template, $depr)) {        //             $template = str_replace('.', DS, $controller) . $depr . $template;        //         }        //     }        // } else {        //     $template = str_replace(['/', ':'], $depr, substr($template, 1));        // }

改为:

 if (0 !== strpos($template, '/')) {            $template   = str_replace(['/', ':'], $depr, $template);            $module = Loader::parseName($request->module());            if ($module) {                if ('' == $template) {                    // 如果模板文件名为空 按照默认规则定位                    $template = str_replace('.', DS, $module) . $depr . $request->action();                } elseif (false === strpos($template, $depr)) {                    $template = str_replace('.', DS, $module) . $depr . $template;                }            }        } else {            $template = str_replace(['/', ':'], $depr, substr($template, 1));        }

当然,要实现预期效果还需要去改下config.php中的view_path,这里我改成了:

// 模板路径'view_path'    => ROOT_PATH.'app\templates'.DS,

最后建议学习tp5先从入口文件理一下整个框架的加载运行过程,有个整体的概念,有资源的可以找个比较好的案例学习下.本菜就抱紧TP的大腿去下了个官方5.0.11版

原创粉丝点击