ecmall二次开发技术积累.docx

上传人:b****7 文档编号:11389395 上传时间:2023-02-28 格式:DOCX 页数:116 大小:62.09KB
下载 相关 举报
ecmall二次开发技术积累.docx_第1页
第1页 / 共116页
ecmall二次开发技术积累.docx_第2页
第2页 / 共116页
ecmall二次开发技术积累.docx_第3页
第3页 / 共116页
ecmall二次开发技术积累.docx_第4页
第4页 / 共116页
ecmall二次开发技术积累.docx_第5页
第5页 / 共116页
点击查看更多>>
下载资源
资源描述

ecmall二次开发技术积累.docx

《ecmall二次开发技术积累.docx》由会员分享,可在线阅读,更多相关《ecmall二次开发技术积累.docx(116页珍藏版)》请在冰豆网上搜索。

ecmall二次开发技术积累.docx

ecmall二次开发技术积累

ecmall-knowledge-baseecmall-development-knowledge-detail.html

ecmall解释

php

/**

* ecmall框架核心文件,包含最基础的类与函数

*StreamliningcomesfromSparrowPHP@Garbin

*

*@authorGarbin

*/

/*---------------------以下是系统常量-----------------------*/

/*记录程序启动时间*/

define('START_TIME',ecm_microtime());

/*判断请求方式*/

define('IS_POST',(strtoupper($_SERVER['REQUEST_METHOD'])=='POST'));

/*判断请求方式*/

define('IN_ECM',true);

/*定义PHP_SELF常量*/

define('PHP_SELF',  htmlentities(isset($_SERVER['PHP_SELF'])?

$_SERVER['PHP_SELF']:

$_SERVER['SCRIPT_NAME']));

/*当前ecmall程序版本*/

define('VERSION','2.0final');

/*当前ecmall程序Release*/

define('RELEASE','20090821');

/*---------------------以下是PHP在不同版本,不同服务器上的兼容处理-----------------------*/

/*在部分IIS上会没有REQUEST_URI变量*/

$query_string=isset($_SERVER['argv'][0])?

$_SERVER['argv'][0]:

$_SERVER['QUERY_STRING'];

if(!

isset($_SERVER['REQUEST_URI']))

{

$_SERVER['REQUEST_URI']=PHP_SELF.'?

'.$query_string;

}

else

{

if(strpos($_SERVER['REQUEST_URI'],'?

')===false&&$query_string)

{

     $_SERVER['REQUEST_URI'].='?

'.$query_string;

}

}

functionview($mess){

if(is_array($mess)===true){

$mess=highlight_string('

php'.var_export($mess,true),true);

}

exit($mess);

}

/*---------------------以下是系统底层基础类及工具-----------------------*/

classecmall

{

/*启动*/

functionstartup($config=array())

{

/* 

ecmall:

:

startup(array(

     'default_app'=>  'default',  //默认执行文件,

     'default_act'=>  'index',//默认执行方法

     'app_root'  =>  ROOT_PATH.'/app',//默认执行文件的路径

     'external_libs'=>  array(//通用引入文件

      ROOT_PATH.'/includes/global.lib.php',

      ROOT_PATH.'/includes/libraries/time.lib.php',

      ROOT_PATH.'/includes/ecapp.base.php',

      ROOT_PATH.'/includes/plugin.base.php',

      ROOT_PATH.'/app/frontend.base.php',

      ROOT_PATH.'/includes/subdomain.inc.php',

     ),

));

*/   

     /*加载初始化文件*/

     require(ROOT_PATH.'/eccore/controller/app.base.php');   //基础控制器类

     require(ROOT_PATH.'/eccore/model/model.base.php');//模型基础类

     //每次都有一堆的文件引入.

     if(!

empty($config['external_libs']))

     {

      foreach($config['external_libs']as$lib)

      {

        require($lib);

      }

     }

     

     /*数据过滤*/

     if(!

get_magic_quotes_gpc())

     {

      $_GET=addslashes_deep($_GET);

      $_POST  =addslashes_deep($_POST);

      $_COOKIE=addslashes_deep($_COOKIE);

     }

     /*请求转发作用不大,可直接写死*/

     $default_app=$config['default_app']?

$config['default_app']:

'default';

     $default_act=$config['default_act']?

$config['default_act']:

'index';

     

     //处理GET,抓取app及act参数.

     // http:

//127.0.0.1/ecmall/index.php?

app=message&act=inbox  很容易看得出来.

     $app=isset($_REQUEST['app'])?

trim($_REQUEST['app']):

$default_app;

     $act=isset($_REQUEST['act'])?

trim($_REQUEST['act']):

$default_act;

     

     //根据app参数来引入相应的文件.$config['app_root']变量是路径.

     $app_file=$config['app_root']."/{$app}.app.php";

     //文件判断

     if(!

is_file($app_file))

     {

      exit('Missingcontroller');

     }

     //引入文件.

     require($app_file);

     

     //定义两个常量,估计日后常用..

     define('APP',$app);

     define('ACT',$act);

     

     //ucfirst,假设第一个字为小写,即转大写.

     //也是组合成相应的类名,classMessageAppextendsMemberbaseApp可以看得出来.

     $app_class_name=ucfirst($app).'App';

     

     /*实例化控制器*/

     $app   =new$app_class_name();

     

     //c()函数即将当前的实例引用给$GLOBALS['ECMALL_APP']

     c($app);

     

     //执行$act方法

     $app->do_action($act);     //转发至对应的Action

     

     //空白方法,未添加功能.

$app->destruct();

}

}

/**

*所有类的基础类

*

*@authorGarbin

*@usagenone

*/

classObject

{

var$_errors=array();

var$_errnum=0;

function__construct()

{

     $this->Object();

}

functionObject()

{

     #TODO

}

/**

   *触发错误

   *

   *@authorGarbin

   *@param   string$errmsg

   *@returnvoid

   */

function_error($msg,$obj='')

{

     if(is_array($msg))

     {

      $this->_errors=array_merge($this->_errors,$msg);

      $this->_errnum+=count($msg);

     }

     else

     {

      $this->_errors[]=compact('msg','obj');

      $this->_errnum++;

     }

}

/**

   *检查是否存在错误

   *

   *@authorGarbin

   *@returnint

   */

functionhas_error()

{

     return$this->_errnum;

}

/**

   *获取错误列表

   *

   *@authorGarbin

   *@returnarray

   */

functionget_error()

{

     return$this->_errors;

}

}

/**

*语言项管理

*

*@authorGarbin

*@paramnone

*@returnvoid

*/

classLang

{

/**

   *获取指定键的语言项

   *

   *@authorGarbin

   *@param   none

   *@returnmixed

   */

function&get($key='')

{

     $vkey=$key?

strtokey("{$key}",'$GLOBALS[\'__ECLANG__\']'):

'$GLOBALS[\'__ECLANG__\']';

     $tmp=eval('if(isset('.$vkey.'))return'.$vkey.';else{return$key;}');

     return$tmp;

}

/**

   *加载指定的语言项至全局语言数据中

   *

   *@authorGarbin

   *@paramnone

   *@returnvoid

   */

functionload($lang_file)

{

     static$loaded=array();

     $old_lang=$new_lang=array();

     $file_md5=md5($lang_file);

     if(!

isset($loaded[$file_md5]))

     {

      $new_lang=Lang:

:

fetch($lang_file);

      $loaded[$file_md5]=$lang_file;

     }

     else

     {

      return;

     }

     $old_lang=&$GLOBALS['__ECLANG__'];

     if(is_array($old_lang))

     {

      $new_lang=array_merge($old_lang,$new_lang);

     }

     $GLOBALS['__ECLANG__']=$new_lang;

}

/**

   *获取一个语言文件的内容

   *

   *@authorGarbin

   *@param   string$lang_file

   *@returnarray

   */

functionfetch($lang_file)

{

     returninclude($lang_file);

}

}

functionlang_file($file)

{

returnROOT_PATH.'/languages/'.LANG.'/'.$file.'.lang.php';

}

/**

*配置管理器

*

*@authorGarbin

*@usagenone

*/

classConf

{

/**

   *加载配置项

   *

   *@authorGarbin

   *@param   mixed$conf

   *@returnbool

   */

functionload($conf)

{

     $old_conf=isset($GLOBALS['ECMALL_CONFIG'])?

$GLOBALS['ECMALL_CONFIG']:

array();

     if(is_string($conf))

     {

      $conf=include($conf);

     }

     if(is_array($old_conf))

     {

      $GLOBALS['ECMALL_CONFIG']=array_merge($old_conf,$conf);

     }

     else

     {

      $GLOBALS['ECMALL_CONFIG']=$conf;

     }

}

/**

   *获取配置项

   *

   *@authorGarbin

   *@param   string$k

   *@returnmixed

   */

functionget($key='')

{

     $vkey=$key?

strtokey("{$key}",'$GLOBALS[\'ECMALL_CONFIG\']'):

'$GLOBALS[\'ECMALL_CONFIG\']';

     returneval('if(isset('.$vkey.'))return'.$vkey.';else{returnnull;}');

}

}

/**

*获取视图链接

*

*@authorGarbin

*@param   string$engine

*@returnobject

*/

function&v($is_new=false,$engine='default')

{

include_once(ROOT_PATH.'/eccore/view/template.php');

if($is_new)

{

     returnnewecsTemplate();

}

else

{

     static$v=null;

     if($v===null)

     {

      switch($engine)

      {

        case'default':

             $v=newecsTemplate();

        break;

      }

     }

     return$v;

}

}

/**

*  获取一个模型

*

*  @authorGarbin

*  @param  string$model_name

*  @param  array  $params

*  @param  book$is_new

*  @returnobject

*/

function&m($model_name,$params=array(),$is_new=false)

{

static$models=array();

$model_hash=md5($model_name.var_export($params,true));

if($is_new||!

isset($models[$model_hash]))

{

     $model_file=ROOT_PATH.'/includes/models/'.$model_name.'.model.php';

     if(!

is_file($model_file))

     {

      /*不存在该文件,则无法获取模型*/

      returnfalse;

     }

     include_once($model_file);

     $model_name=ucfirst($model_name).'Model';

     if($is_new)

     {

      returnnew$model_name($params,db());

     }

     $models[$model_hash]=new$model_name($params,db());

}

return$models[$model_hash];

}

/**

*获取一个业务模型

*

*@paramstring$model_name

*@paramarray$params

*@parambool$is_new

*@returnobject

*/

function&bm($model_name,$params=array(),$is_new=false)

{

static$models=array();

$model_hash=md5($model_name.var_export($params,true));

if($is_new||!

isset($models[$model_hash]))

{

     $model_file=ROOT_PATH.'/includes/models/'.$model_name.'.model.php';

     if(!

is_file($model_file))

     {

      /*不存在该文件,则无法获取模型*/

      returnfalse;

     }

     include_once($model_file);

     $model_name=ucfirst($model_name).'BModel';

     if($is_new)

     {

      returnnew$model_name($params,db());

     }

     $models[$model_hash]=new$model_name($params,db());

}

return$models[$model_hash];

}

/**

*获取当前控制器实例

*

*@authorGarbin

*@returnvoid

*/

functionc(&$app)

{

$GLOBALS['ECMALL_APP']=&$app;

}

/**

*获取当前控制器

*

*@authorGarbin

*@returnObject

*/

function&cc()

{

return$GLOBALS['ECMALL_APP'];

}

/**

*导入一个类

*

*@authorGarbin

*@returnvoid

*/

functionimport()

{

$c=func_get_args();

if(empty($c))

{

     return;

}

array_walk($c,create_function('$item,$key','include_once(ROOT_PATH.\'/includes/libraries/\'.$item.\'.php\');'));

}

/**

*将default.abc类的字符串转为$default['abc']

*

*@authorGarbin

*@param   string$str

*@returnstring

*/

functionstrtokey($str,$owner='')

{

if(!

$str)

{

     return'';

}

if($owner)

{

     return$owner.'[\''.str_replace('.','\'][\'',$str).'\']';

}

else

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1