纯属闲着无聊的- -!,前两天一直研究dede,放弃了。无聊最近准备研究ThinkPHP,但是ThinkPHP生成的目录的结构让我很郁闷,个人还是比较喜欢dede之类的那种比较简单的结构,所以今天就下手改了一下。现在分享出来给大家。

1.先修改生成项目目录的主体结构,这个不需要修改ThinkPHP的源码(也可以修改,如果是初学者,最好还是先别修改了)

新建index.php入口文件,然后不按照手册新建项目。输入以下代码;

$root=dirname(__FILE__);

$root=str_replace('\\', '/', $root);

define('__ROOT__',$root);           //网站根目录

define('LIB_PATH', __ROOT__.'/libs/');

define('CONF_PATH', __ROOT__.'/config/');   //配置文件目录

define('LANG_PATH', __ROOT__.'/lang/');     //语言目录

define('TMPL_PATH', __ROOT__.'/templates/');        //目录文件

define('HTML_PATH', __ROOT__.'/a/');            //生成静态页面目录

define('RUNTIME_PATH',__ROOT__.'/cache/');      //缓存目录

define('LOG_PATH', RUNTIME_PATH.'/log/');

define('TEMP_PATH', RUNTIME_PATH.'/temp/');

define('DATA_PATH',RUNTIME_PATH.'/data/');

define('CACHE_PATH', RUNTIME_PATH.'/cache/');

define('APP_DEBUG', true);          //开启调试

require_once 'core/ThinkPHP.php';

这样就可以生成目录了.基本结构就是

我把ThinkPHP文件夹重命名成core了.

2.如果想把Action和Model文件夹也直接放在网站根目录的话,可以直接修改ThinkPHP/Common/runtime.php中第177行左右function build_app_dir() {

// 没有创建项目目录的话自动创建

if(!is_dir(APP_PATH)) mkdir(APP_PATH,0755,true);

if(is_writeable(APP_PATH)) {

$dirs  = array(

LIB_PATH,

RUNTIME_PATH,

CONF_PATH,

COMMON_PATH,

LANG_PATH,

CACHE_PATH,

TMPL_PATH,

TMPL_PATH.C('DEFAULT_THEME').'/',

LOG_PATH,

TEMP_PATH,

DATA_PATH,

LIB_PATH.'Model/',

LIB_PATH.'Action/',

LIB_PATH.'Behavior/',

LIB_PATH.'Widget/',

);

foreach ($dirs as $dir){

if(!is_dir($dir))  mkdir($dir,0755,true);

}

// 写入目录安全文件

build_dir_secure($dirs);

// 写入初始配置文件

if(!is_file(CONF_PATH.'config.php'))

file_put_contents(CONF_PATH.'config.php',"<?php \nreturn array(\n\t//'配置项'=>'配置值'\n);\n?>");

// 写入测试Action

if(!is_file(LIB_PATH.'Action/IndexAction.class.php'))

build_first_action();

}else{

header('Content-Type:text/html; charset=utf-8');

exit('项目目录不可写,目录无法自动生成!
请使用项目生成器或者手动生成项目目录~');

}

}

改成function build_app_dir() {

// 没有创建项目目录的话自动创建

if(!is_dir(APP_PATH)) mkdir(APP_PATH,0755,true);

if(is_writeable(APP_PATH)) {

$dirs  = array(

LIB_PATH,

RUNTIME_PATH,

CONF_PATH,

COMMON_PATH,

LANG_PATH,

CACHE_PATH,

TMPL_PATH,

TMPL_PATH.C('DEFAULT_THEME').'/',

LOG_PATH,

TEMP_PATH,

DATA_PATH,

__ROOT__.'Model/',

__ROOT__.'Action/',

__ROOT__.'Behavior/',

__ROOT__.'Widget/',

);

foreach ($dirs as $dir){

if(!is_dir($dir))  mkdir($dir,0755,true);

}

// 写入目录安全文件

build_dir_secure($dirs);

// 写入初始配置文件

if(!is_file(CONF_PATH.'config.php'))

file_put_contents(CONF_PATH.'config.php',"<?php \nreturn array(\n\t//'配置项'=>'配置值'\n);\n?>");

// 写入测试Action

if(!is_file(LIB_PATH.'Action/IndexAction.class.php'))

build_first_action();

}else{

header('Content-Type:text/html; charset=utf-8');

exit('项目目录不可写,目录无法自动生成!
请使用项目生成器或者手动生成项目目录~');

}

}

3.模板目录,直接仿造dede的那种

修改ThinkPHP/Lib/Core/View.class.php 第144行  parseTemplate这个方法,具体是在第183行。修改完的代码public function parseTemplate($template='') {

if(is_file($template)) {

$group  =  defined('GROUP_NAME')?GROUP_NAME.'/':'';

$theme  =   C('DEFAULT_THEME');

// 获取当前主题的模版路径

if(1==C('APP_GROUP_MODE')){ // 独立分组模式

define('THEME_PATH',   dirname(BASE_LIB_PATH).'/'.$group.basename(TMPL_PATH).'/'.$theme);

define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').C('APP_GROUP_PATH').'/'.$group.basename(TMPL_PATH).'/'.$theme);

}else{

define('THEME_PATH',   TMPL_PATH.$group.$theme);

define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').basename(TMPL_PATH).'/'.$group.$theme);

}

return $template;

}

$template = str_replace(':', '/', $template);

// 获取当前主题名称

$theme = $this->getTemplateTheme();

// 获取当前模版分组

$group   =  defined('GROUP_NAME')?GROUP_NAME.'/':'';

if(defined('GROUP_NAME') && strpos($template,'@')){ // 跨分组调用模版文件

list($group,$template)  =   explode('@',$template);

$group  .=   '/';

}

// 获取当前主题的模版路径

if(1==C('APP_GROUP_MODE')){ // 独立分组模式

define('THEME_PATH',   dirname(BASE_LIB_PATH).'/'.$group.basename(TMPL_PATH).'/'.$theme);

define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').C('APP_GROUP_PATH').'/'.$group.basename(TMPL_PATH).'/'.$theme);

}else{

define('THEME_PATH',   TMPL_PATH.$group.$theme);

define('APP_TMPL_PATH',__ROOT__.'/'.APP_NAME.(APP_NAME?'/':'').basename(TMPL_PATH).'/'.$group.$theme);

}

// 分析模板文件规则

if('' == $template) {

// 如果模板文件名为空 按照默认规则定位

$template = MODULE_NAME . C('TMPL_FILE_DEPR') . ACTION_NAME;

}elseif(false === strpos($template, '/')){

//             $template = MODULE_NAME . C('TMPL_FILE_DEPR') . $template;

}

return THEME_PATH.C('default').$template.C('TMPL_TEMPLATE_SUFFIX');

}

现在测试一下,在根目录下Action中新建IndexAction.class.php<?php

// 本类由系统自动生成,仅供测试用途

class IndexAction extends Action {

function index(){

$this->assign('title','测试标题');

$this->display('index');

}

}

QQ2387183033 QQ群:252799167

php结构的项目,ThinkPHP修改项目结构相关推荐

  1. C# 项目如何修改项目名称

    下面将演示如何将项目名称改成Test 1.鼠标左击修改项目的修改项目名称 2.ctrl + f ,然后修改整个项目的名称 3.如果修改文件的名称,记得将sln中加载的Test.csproj路径写对

  2. mysql 修改表结构方案_MySQL中修改表结构时需要注意的一些地方

    MySql 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据.不是所有的数据库管理员.程序员.系统管理员都非常了解Mysql能避免这种情况.DBA会经常碰到这种生产中断 ...

  3. oracle修改表结构精度,常见问题--oracle10g修改表结构

    1.修改表结构 语法: alter table table_name modify (列名  数据类型) 示例: 9:54:25 SQL> alter table dbtest_dw_cust_ ...

  4. vue-cli+webpack项目,修改项目名称

    使用vue-cli+webpack创建的项目,修改文件名称或者更改文件的位置,运营时会报错,是因为npm项目,在安装依赖(node_nodules)时,会记录当前的文件路径,当修改之后就无法正常启动. ...

  5. mysql 如何修改数据库表结构_MySQL数据库如何修改表结构

    MySQL数据库修改表结构的方法:1.使用add添加字段,使用drop删除字段:2.使用alter修改字段名:3.修改列类型:4.修改表名:5.修改表选项:6.修改列属性. MySQL数据库修改表结构 ...

  6. 怎么修改mysql表的结构_MySQL数据库如何修改表结构

    MySQL数据库修改表结构的方法:1.使用add添加字段,使用drop删除字段:2.使用alter修改字段名:3.修改列类型:4.修改表名:5.修改表选项:6.修改列属性. [相关图文教程:mysql ...

  7. Maven项目 (JeecgBoot)修改项目名和模块名方法

    JeecgBoot使用版本:2.2.1 只要是Maven项目,修改的方式都和本文大同小异 文章目录 后端 修改文件名 修改模块名 `pom.xml` 重新构建 前端 拓1 去掉请求路径的 `/jeec ...

  8. oracle 批量修改表结构,关于Oracle批量修改表结构相关内容的整理

    从各地搜集而来,以备不时之需,随时增改 1.给表加注释 COMMENT ON TABLE land.landsellmend IS '补办出让'; 2.查看表的COMMENT SELECT * FRO ...

  9. myeclipse 修改项目名Tomcat启动项目报错java.lang.IllegalArgumentException: Can't convert argument: null...

    一.Tomcat启动报错: 有时候我们会避免项目重名,在导入项目时会修改项目名称. 修改项目名称后启动该项目至tomcat,报错:java.lang.IllegalArgumentException: ...

  10. 解决IDEA修改已有项目为maven项目时目录结构被改变的问题

    Idea可以在项目根目录上右键选择"添加框架支持",选择maven,为项目添加Maven支持. 但这样会导致原有项目的目录结构被破坏. 更好的方法是在根目录添加pom.xml文件 ...

最新文章

  1. linux会话管理,Linux 安装 screen 远程会话管理工具
  2. 完美解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题
  3. Linux学习之遇到的小问题---查看系统版本,虚拟机创建共享文件夹,用到的命令记录。
  4. JBPM中 使用JobExecutor执行timer定义的job
  5. OpenSSH 密钥管理:RSA/DSA 认证(转载)
  6. linux:vi 替换命令
  7. DeFi 协议 Benchmark Protocol 启动第二阶段流动性挖矿计划 The Press
  8. centos7 svn自动更新至web目录
  9. python爬虫的用途_python爬虫用代理ip有什么用途?
  10. matplotlib-plt.plot用法
  11. mysql temp table_新特性解读 | MySQL 8.0 Temptable 引擎介绍
  12. 动态SQL和PL/SQL的EXECUTE IMMEDIATE选项
  13. 解决办法:Eclipse卡死在“revert resources”,进度一直为0
  14. 计算机机房安全设计规范,弱电机房建设规范要求
  15. 基于Python的汉语分词系统
  16. nginx集群部署,实现高可用
  17. Keil5下载芯片包并导入教程
  18. 电信NB-IOT物联网卡与阿里云物联网平台,不得不说的秘密!
  19. #467 – 使用UniformGrid 均分行和列(Use a UniformGrid for Evenly Spaced Rows and Columns)
  20. HTML+CSS一篇文章搞定

热门文章

  1. 学习面向对象的第一天,感觉还好啦
  2. [翻译]MVP(SC),MVP(PV),PM,MVVM 和 MVC 表现模式架构对比
  3. Google Maps API 进级:GoogleMaps中显示画中画
  4. spring循环依赖 第二讲
  5. idea类文件前面有个小叉号
  6. 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。...
  7. 【路由和交换之H3C自导自演】
  8. mongodb的用法
  9. Ubuntu和Windows双系统调整启动顺序软件
  10. uboot引导内核全过程