ThinkPHP修改項目結構

來源:互聯網
上載者:User

   純屬閑著無聊的- -!,前兩天一直研究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';


這樣就可以組建目錄了.基本結構就是

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1119441K6-0.png" title="QQ20130904154102.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('項目目錄不可寫,目錄無法自動產生!<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

本文出自 “尛雷” 部落格,請務必保留此出處http://a3147972.blog.51cto.com/2366547/1288607

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.