php项目如何修改,ThinkPHP修改项目结构

纯属闲着无聊的- -!,前两天一直研究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';

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

0818b9ca8b590ca3270a3433284dd417.png

我把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

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

class IndexAction extends Action {

function index(){

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

$this->display('index');

}

}

QQ2387183033 QQ群:252799167

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值