公要善其事,必先利其器——FCS开发框架文件结构优化

1 篇文章 0 订阅
 

公要善其事,必先利其器

——FCS开发框架文件结构优化

FCS作为一个面向对象PHP开发框架,目前发展到了0.8版本,已经比较完善,但还有一些地方需要改进。为了更好的利用FCS来进行PHP开发,我们先对FCS进行一些目录优化,使其更要合理,使用起来更加方便。

 

一、优化前后的FCS文件结构对比

 

原来的文件结构(图1


    我们可以看到FCS原来的文件结构中,将应用文件放入FCS框架文件夹中,在上面的图片中我们看到,Common文件夹、Conf文件夹和Lib文件夹里面都有框架自带的后台管理应用admin文件夹,而框架将模板文件又独立于框架文件夹,同时应用的模板文件夹也放在外在,上面的片中,Tpl文件夹是系统文件夹,default/Public文件夹是系统公共文件夹,包含框架自带的消息模板和DataGrid模板的相关文件,而default/Admin则是后台管理应用admin的模板文件夹。

 

不好的原因1:如果我们现在要新建一个应用,就必须在上述的几个文件夹中或更多建立相应的应用文件夹,这样操作起来会很麻烦,有时会遗漏。同样的道理,如果我们要完成删除一个应用,就必须在这些包含有应用文件的文件夹中一一删除,而不能一次完成。

         也许有朋友会说,直接用代码完成新建和删除就OK啦,直接又不会遗漏,但如果我的应用要添加一些目录,这些目录将放在哪呢?删除的时候,代码会将我添加的目录一同删除吗?就因为这样的原因,我对FCS的文件结构进行了优化。

 

 

优化后的文件结构(图2


从图中我们可以看到,优化后的文件结构非常清晰,在FCS文件夹下有两个文件夹APPFCSAPP文件夹存放所有的应用程序,比如本例中的AdminFCS文件夹则全是FCS开发框架的文件。这样如果我们要新建一个应用,只需要在APP文件夹下建立一个新的文件夹就OK了,不需要穿行FCS系统文件夹中,要删除一个应用直接将应用文件夹删除,一次搞定。

 

 

优化后的文件结构比较清晰,方便开发。

 

二、具体实现步骤Step by step

         1、将图1FCS根目录下的PublicTPLDoc(可以删除)移入FCS文件夹(有电脑图标)

         2、在FCS根目录下新建一个APP文件夹,并在APP文件夹里面建立如图2的目录结构

         3、将FCS/FCS/Common/Admin/下的所有文件,移到FCS/APP/Admin/Common文件夹

         4、将FCS/FCS/Conf/Admin/下的所有文件,移到FCS/APP/Admin/Conf文件夹

         5、将FCS/FCS/Lib/Admin/下的所有文件,移到FCS/APP/Admin/Lib文件夹

         6、将FCS/FCS/TPL/default/Admin下的所有文件,移到FCS/APP/Admin/Tpl文件夹

         7、将FCS/FCS/Lib/FCS/文件夹下的所有文件,移到FCS/FCS/Lib文件夹,并将FCS/FCS/Lib/FCS文件夹删除

         8、将FCS/admin.php文件,移到FCS/APP/Admin文件夹

         9、、修改FCS/index.php文件

                   require 前添加代码

define('WEB_ROOT', dirname(__FILE__));

define('FCS_PATH', WEB_ROOT . '/FCS');

 

                       require 'admin.php';

修改为:         require ‘APP/admin/admin.php’;

 

         10、修改FCS/APP/Admin/Admin.php文件

                   将代码

define('FCS_PATH', dirname(__FILE__).'/FCS');

define('WEB_ROOT', dirname(__FILE__));

                   删除

 

define('APP_NAME', 'Admin'); 语句下添加以下语句

//定义项目文件绝对路径

define('APP_PATH',  WEB_ROOT . '/APP/' . APP_NAME);

 

         11、修改FCS/FCS/Common/defines.php文件

                        //目录设置 语句下行添加语句 define('COMMON_DIR', 'Common');

                   define('UPLOAD_PATH',FCS_PATH.'/Uploads/'); // 语句下添加以下代码

 

//项目文件路径设置

define('APP_LIB_PATH',APP_PATH.'/'.LIB_DIR.'/'); //

define('APP_COMMON_PATH', APP_PATH .'/' . COMMOM_DIR .'/')

define('APP_TAG_PATH',APP_PATH.'/'.TAGS_DIR.'/'); //

define('APP_CACHE_PATH',APP_PATH.'/'.CACHE_DIR.'/'); //

define('APP_HTML_PATH',APP_PATH.'/'.HTML_DIR.'/'); //

define('APP_CONFIG_PATH',APP_PATH.'/'.CONF_DIR.'/'); //

define('APP_LOG_PATH',APP_PATH.'/'.LOG_DIR.'/'); //

define('APP_LANG_PATH',APP_PATH.'/'.LANG_DIR.'/'); //

define('APP_TEMP_PATH',APP_PATH.'/'.TEMP_DIR.'/'); //

define('APP_CLIENT_PATH',APP_PATH.'/Client/'); //

define('APP_UPLOAD_PATH',APP_PATH.'/Uploads/'); //

define('APP_TPL_PATH', APP_PATH.'/Tpl/');//

 

         12、修改FCS/APP/Conf/_define.php文件

                  

define('APPS_PATH',FCS_PATH.'/Lib/'); 

                   修改为

define('APPS_PATH',APP_LIB_PATH);

                  

         13、修改FCS/FCS/Lib/Core/App.class.php文件

                   将以下代码

        $list = glob(FCS_PATH.'/Common/'.APP_NAME.'/*.php');

        if(!empty($list)) {

            import(APP_NAME.'.*',FCS_PATH.'/Common/','.php');

        }

              修改为:        

        $list = glob(APP_COMMON_PAH . '*.php');

        if(!empty($list)) {

            import('.*',APP_COMMON_PAH ,'.php');

        }

                                     $this->loadConfig('App',CONFIG_PATH.APP_NAME.'/');

              修改为              $this->loadConfig('App',APP_CONFIG_PATH);

                                     $list = glob($path.$name.'.*');

              修改为              $list = glob(CONFIG_PATH . $name.'.*');

              将代码

        if (file_exists(LANG_PATH.APP_NAME.'/'.$langSet.".php")) {

            include_cache(LANG_PATH.APP_NAME.'/'.$langSet.".php");   

        }

             修改为

        if (file_exists(APP_LANG_PATH .$langSet.".php")) {

            include_cache(APP_LANG_PATH . $langSet.".php");   

        }

              将代码

                       define('TEMPLATE_MODULE_PATH',APP_NAME.'/'.MODULE_NAME.'/');

              修改为

                       define('TEMPLATE_MODULE_PATH', MODULE_NAME.'/');

             

              将代码

              //系统公共文件地址

        define('SYS_PUBLIC_URL', WEB_URL.'/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/Public');

              //网站公共文件地址

        define('WEB_PUBLIC_URL', WEB_URL.'/Public');

        //项目公共文件地址

        define('APP_PUBLIC_URL', WEB_URL.'/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/'.APP_NAME.'/Public');

        define('__CURRENT__', WEB_URL.'/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/'.APP_NAME.'/'.MODULE_NAME);

        //模板文件名 绝对路径

        define('TMPL_FILE_NAME',TEMPLATE_PATH.'/'.TEMPLATE_MODULE_PATH.ACTION_NAME.TEMPLATE_SUFFIX);

        //CACHE文件名 绝对路径

        define('CACHE_FILE_NAME',CACHE_PATH.APP_NAME.'/'.md5(TMPL_FILE_NAME).CACHFILE_SUFFIX);

        if(HTML_CACHE_ON != false){

            //生成唯一的静态文件名

            define('HTML_FILE_NAME',HTML_PATH.APP_NAME.'/'.md5($_SERVER['REQUEST_URI']).HTMLFILE_SUFFIX);

 

        }

 

     修改为

              //系统公共文件地址

        define('SYS_PUBLIC_URL', WEB_URL.'/FCS/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/Public');

              //网站公共文件地址

        define('WEB_PUBLIC_URL', WEB_URL.'/FCS/Public');

        //项目公共文件地址

        define('APP_PUBLIC_URL', WEB_URL.'/APP/'.APP_NAME .'/' .TMPL_DIR.'/Public');

        define('__CURRENT__', WEB_URL.'/APP/'. APP_NAME .'/' .TMPL_DIR.'/'.MODULE_NAME);

        //模板文件名 绝对路径

        define('TMPL_FILE_NAME',APP_TPL_PATH.'/'.TEMPLATE_MODULE_PATH.ACTION_NAME.TEMPLATE_SUFFIX);

        //CACHE文件名 绝对路径

        define('CACHE_FILE_NAME',APP_CACHE_PATH . md5(TMPL_FILE_NAME).CACHFILE_SUFFIX);

        if(HTML_CACHE_ON != false){

            //生成唯一的静态文件名

            define('HTML_FILE_NAME',APP_HTML_PATH . md5($_SERVER['REQUEST_URI']).HTMLFILE_SUFFIX);

 

        }

              将代码

$moduleClassFile = APPS_PATH.APP_NAME;

                   修改为

$moduleClassFile = APPS_PATH;

 

         14、修改FCS/FCS/Lib/Core/Template.class.php

                   将代码

         $tmplCacheFile = CACHE_PATH.APP_NAME.'/'.md5($tmplTemplateFile).CACHFILE_SUFFIX;

                   修改为

$tmplCacheFile = APP_CACHE_PATH . md5($tmplTemplateFile).CACHFILE_SUFFIX;

                   将代码

$tmplCacheFile = CACHE_PATH.APP_NAME.'/'.md5($tmplTemplateFile).CACHFILE_SUFFIX;

    修改为

$tmplCacheFile = APP_CACHE_PATH . md5($tmplTemplateFile).CACHFILE_SUFFIX;

将代码

                   if(!file_exists($tmplCacheFile))

{

                             $appDir = CACHE_PATH.APP_NAME;

            if (!file_exists($appDir)) { // 项目缓存目录不存在则创建

                mkdir($appDir);

            }

            return False;

        }

                   修改为

                  if(!file_exists($tmplCacheFile)){

            if (!file_exists(APP_CACHE_PATH)) { // 项目缓存目录不存在则创建

                mkdir($appDir);

            }

            return False;

        }

 

                  将代码

        if(!file_exists($tmplHTMLFile)){

            $appDir = HTML_PATH.APP_NAME;

            if (!file_exists($appDir)) { // 项目静态目录不存在则创建

                mkdir($appDir);

            }

            return False;

        }

                   修改为

        if(!file_exists($tmplHTMLFile)){

            if (!file_exists(APP_HTML_PATH)) { // 项目静态目录不存在则创建

                mkdir($appDir);

            }

            return False;

        }

                  

         将代码

                  $tmplTemplateFile = TEMPLATE_PATH.'/'.TEMPLATE_MODULE_PATH;

                 修改为

                   $tmplTemplateFile = APP_TPL_PATH . TEMPLATE_MODULE_PATH;

 

 

15、修改FCS/FCS/Lib/Util/Log.class.php文件

              LOG_PATH       替换为     APP_LOG_PATH

 

16、修改FCS/FCS/Commom/Functions.php

         在函数开头添加代码

        

$temp = explode('.',$class);

           if(''!= $temp[0] && 'fcs'!=strtolower($temp[0]) )

           {

                            $baseUrl = APPS_PATH;

                            $class = str_replace($temp[0].'.','', $class);

 

           }

 

                   将代码

$tpl->assign('publicCss',WEB_URL.'/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/Public/css/FCS.css');

                   修改为

$tpl->assign('publicCss',WEB_URL.'/FCS/'.TMPL_DIR.'/'.TEMPLATE_NAME.'/Public/css/FCS.css');

 

三、大功告成了

         至此我们可以访问http://localhost/fcs/并且登录后台管理系统,如果系统运行正常,那么说明我们的修改是正确的.

         好了,FCS开发框架文件结构优化就完成了。在以后的一系列FCS框架的开发教程,都是基于此优化版的FCS框架,请朋友们记得哦 ^_^

四、FCS开发框架文件结构优化版 下载

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值