ThinkPHP修改專案結構
純屬閒著無聊的- -!,前兩天一直研究dede,放棄了。無聊最近準備研究ThinkPHP,但是ThinkPHP生成的目錄的結構讓我很鬱悶,個人還是比較喜歡dede之類的那種比較簡單的結構,所以今天就下手改了一下。現在分享出來給大家。
1.先修改生成專案目錄的主體結構,這個不需要修改ThinkPHP的原始碼(也可以修改,如果是初學者,最好還是先別修改了)
新建index.php入口檔案,然後不按照手冊新建專案。輸入以下程式碼;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$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行左右
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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 );
// 寫入測試Action
if (!is_file(LIB_PATH. `Action/IndexAction.class.php` ))
build_first_action();
} else {
header( `Content-Type:text/html; charset=utf-8` );
exit( `專案目錄不可寫,目錄無法自動生成!<BR>請使用專案生成器或者手動生成專案目錄~` );
}
} |
改成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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 );
// 寫入測試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行。修改完的程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
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
1
2
3
4
5
6
7
8
|
<?php // 本類由系統自動生成,僅供測試用途 class IndexAction extends Action {
function index(){
$this ->assign( `title` , `測試標題` );
$this ->display( `index` );
}
} |
本文轉自 3147972 51CTO部落格,原文連結:http://blog.51cto.com/a3147972/1288607,如需轉載請自行聯絡原作者
相關文章
- 專案結構
- 如何構建「大型 Node.js 專案」的專案結構?Node.js
- ThinkPHP5.0目錄結構PHP
- vue-cli 專案結構Vue
- QtCreator透過CMake構建專案,修改專案名稱後報錯。QT
- 『chisel』透過最小專案理解 Chisel 專案結構
- SSM(十) 專案重構-網際網路專案的Maven結構SSMMaven
- Golang 扁平專案程式碼結構Golang
- Webstorm 新建 Express 專案結構分析WebORMExpress
- RBAC_專案結構劃分
- hadoop 專案及其結構(一)Hadoop
- 專案治理結構初探(一)(轉)
- 專案治理結構初探(二)(轉)
- 專案治理結構初探(三)(轉)
- ATM-Shop專案結構樹
- Laragon實現快速建立ThinkPHP專案GoPHP
- thinkphp6 專案搭建記錄PHP
- 架構系列:ASP.NET 專案結構搭建架構ASP.NET
- vue(16)vue-cli建立專案以及專案結構解析Vue
- 通過替換frm檔案方式修改表結構
- flask-restful 大型專案結構示例FlaskREST
- React 專案結構和元件命名之道React元件
- 小程式的專案結構設計
- Avalonia開發(二)專案結構解析
- 05 常見微服務專案結構微服務
- vue-cli#2.0專案結構分析Vue
- vue-cli#4.7專案結構分析Vue
- vue-cli專案結構詳解Vue
- 專案管理與組織結構(轉)專案管理
- Android Studio目錄結構及工程專案結構解析Android
- ThinkPHP 5.1 修改 Cache 原始碼PHP原始碼
- 重構商城App專案——知識總結APP
- JAVAEE專案結構以及併發隨想Java
- 「譯」React 專案結構和元件命名之道React元件
- .NET CLI簡單教程和專案結構
- Play! Framework 系列(二):play 的專案結構Framework
- react-native專案結構介紹React
- LNMP 分散式叢集(五):ThinkPHP專案部署LNMP分散式PHP