ThinkPHP修改项目结构 推荐
2013-09-04 15:54
225 查看
纯属闲着无聊的- -!,前两天一直研究dede,放弃了。无聊最近准备研究ThinkPHP,但是ThinkPHP生成的目录的结构让我很郁闷,个人还是比较喜欢dede之类的那种比较简单的结构,所以今天就下手改了一下。现在分享出来给大家。
1.先修改生成项目目录的主体结构,这个不需要修改ThinkPHP的源码(也可以修改,如果是初学者,最好还是先别修改了)
新建index.php入口文件,然后不按照手册新建项目。输入以下代码;
这样就可以生成目录了.基本结构就是
我把ThinkPHP文件夹重命名成core了.
2.如果想把Action和Model文件夹也直接放在网站根目录的话,可以直接修改ThinkPHP/Common/runtime.php中第177行左右
3.模板目录,直接仿造dede的那种
修改ThinkPHP/Lib/Core/View.class.php 第144行 parseTemplate这个方法,具体是在第183行。修改完的代码
现在测试一下,在根目录下Action中新建IndexAction.class.php
然后访问http://localhost/Index/index测试。
QQ2387183033 QQ群:252799167
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('项目目录不可写,目录无法自动生成!<BR>请使用项目生成器或者手动生成项目目录~'); } }改成
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('项目目录不可写,目录无法自动生成!<BR>请使用项目生成器或者手动生成项目目录~'); } }
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'); } }
然后访问http://localhost/Index/index测试。
QQ2387183033 QQ群:252799167
相关文章推荐
- java web 项目 推荐目录结构
- 在idea 中 修改项目结构
- 项目导入SourceSafe以后文件结构的修改方法。
- ThinkPHP - 配置项目结构
- thinkphp项目:前端界面中修改数据时自动添加selected 或者 checked
- Android Studio修改项目目录结构
- [thinkPHP5项目实战_11]栏目修改
- java web 项目 推荐目录结构
- ThinkPHP 项目目录结构
- eclipse修改Android项目包名和包结构
- 更改tomcat项目路径 不修改server.xml【推荐使用此方法】
- 使用SpringBoot的推荐项目目录结构
- 导入SourceSafe过程中项目结构无法修改问题的解决方案
- 导入SourceSafe过程中项目结构无法修改问题的解决方案。
- ThinkPHP 数据库表结构处理类(简单实用) 推荐
- java web 项目 推荐目录结构
- 导入SourceSafe过程中项目结构无法修改问题的解决方案。
- [thinkPHP5项目实战_21]管理员添加、删除和修改
- 使用基于ThinkPHP3.2.3的ThinkAdmin创建手机电脑通用的表白墙(一)创建项目文件夹结构
- [thinkPHP5项目实战_05]自动生成目录结构