PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/Upload/DoYouHaoBaby/LibPHP/Core/App.class.php

http://dyhb-frame.googlecode.com/
PHP | 162 lines | 135 code | 23 blank | 4 comment | 29 complexity | 172c87e70fe53fecfeebd3d24820dcd9 MD5 | raw file
  1. <?php
  2. /* [DoYouHaoBaby!] (C)Dianniu From 2010.
  3. ?????($)*/
  4. !defined('DYHB_PATH') && exit;
  5. /** PHP __autoload???? */
  6. function __autoload($sClassName){Package::autoLoad($sClassName);}
  7. class App{
  8. private static $_oControl;
  9. private static $_bEmptyModel=false;
  10. static private function init_(){
  11. header('DoYouHaoBaby-Framework | '.DYHB_VERSION);
  12. header("Content-type:text/html;charset=utf-8");
  13. session_start();// ???Session
  14. LangPackage::addPackageDir(DYHB_PATH.'/Resource/Lang'); // ???????
  15. register_shutdown_function(array('RunTime','runtimeShutdown'));// ?????
  16. RunTime::registerShutdown(array('RunTime','exitBeforeShutdown'));
  17. set_error_handler(array('RunTime','errorHandel'));
  18. Package::import(DYHB_PATH.'/LibPHP');// ?? DoYouHaoBaby ??
  19. //if(!is_file(DYHB_PATH.'/LibCom/Js/Dyhb.package.js')){Package::importJsPackage('Dyhb',false);}
  20. if(function_exists('date_default_timezone_set')){
  21. date_default_timezone_set($GLOBALS['_commonConfig_']['TIME_ZONE']);
  22. }
  23. if($GLOBALS['_commonConfig_']['START_GZIP'] && function_exists('gz_handler')){
  24. ob_start('gz_handler');
  25. }
  26. $oUrl=new Url();// URL??
  27. $oUrl->parseUrl();
  28. require(APP_PATH.'/App/DoYouHaoBaby.php');// ?????????
  29. self::checkTemplate();// ????????
  30. self::checkLanguage();
  31. self::constantDefine();// ????
  32. if($GLOBALS['_commonConfig_']['HTML_CACHE_ON']){// ??????
  33. if(file_exists(APP_PATH.'/App/Config/Html.php')){
  34. G::C('_HTML_',(array)(include APP_PATH.'/App/Config/Html.php'));
  35. }
  36. Html::R();
  37. }
  38. Package::import(APP_PATH.'/App/Class');
  39. return;
  40. }
  41. static public function RUN(){
  42. self::init_();
  43. self::execute();
  44. if($GLOBALS['_commonConfig_']['LOG_RECORD']){Log::S();}
  45. return;
  46. }
  47. static public function execute(){
  48. $sModule=ucfirst(MODULE_NAME)."Controller";
  49. if(Package::classExists($sModule,false,true)){$oModule=new $sModule();}
  50. elseif(isset($GLOBALS['_commonConfig_'][strtoupper('_M_'.MODULE_NAME)])){
  51. $sModule=ucfirst(strtolower($GLOBALS['_commonConfig_'][strtoupper('_M_'.MODULE_NAME)]))."Controller";
  52. if(!class_exists($sModule,false)){G::E(G::L('%s ?????%s ???','dyhb',null,MODULE_NAME,$sModule));}
  53. $oModule=new $sModule();
  54. }else{
  55. $oModule=self::emptyModule();
  56. }
  57. if($oModule===false){$bResult=self::display();}
  58. self::$_oControl=$oModule;
  59. if(method_exists( $oModule,'init__')){call_user_func(array($oModule,'init__'));}
  60. if(defined('DOYOUHAOBABY_TEMPLATE_BASE') && ucfirst(DOYOUHAOBABY_TEMPLATE_BASE)!==TEMPLATE_NAME && is_dir(APP_PATH."/Theme/".ucfirst(DOYOUHAOBABY_TEMPLATE_BASE)."/Public/Php/Lang")){LangPackage::addPackageDir(APP_PATH."/Theme/".ucfirst(DOYOUHAOBABY_TEMPLATE_BASE)."/Public/Php/Lang");}
  61. if(method_exists( $oModule,'b'.ucfirst(ACTION_NAME).'_')){call_user_func(array($oModule,'b'.ucfirst(ACTION_NAME).'_'));}
  62. if(method_exists( $oModule,ACTION_NAME)){
  63. call_user_func(array($oModule,ACTION_NAME));
  64. $bResult=true;
  65. }else{
  66. $bResult=self::emptyAction($oModule);
  67. }
  68. if($bResult===false){$bResult=self::display();}
  69. if(method_exists($oModule,'a'.ucfirst(ACTION_NAME).'_')){call_user_func(array($oModule,'a'.ucwords(ACTION_NAME).'_'));}
  70. }
  71. private static function emptyModule(){
  72. self::$_bEmptyModel=true;
  73. $sModule=ucfirst(strtolower($GLOBALS['_commonConfig_']['EMPTY_MODULE_NAME']))."Controller";
  74. if(!Package::classExists($sModule,false,true)){return false;}
  75. return new $sModule();
  76. }
  77. private static function emptyAction($oModule){
  78. if(method_exists( $oModule,$GLOBALS['_commonConfig_']['EMPTY_ACTION_NAME'])){call_user_func(array($oModule,$GLOBALS['_commonConfig_']['EMPTY_ACTION_NAME']));}
  79. else{return false;}
  80. }
  81. static private function display(){
  82. $oController=new Controller();
  83. return $oController->display();
  84. }
  85. static private function checkTemplate(){
  86. if(isset($_GET['t'])){
  87. $sTemplateSet=ucfirst($_GET['t']);
  88. G::cookie(APP_NAME.'_template',$sTemplateSet,3600);
  89. }else{
  90. if(G::cookie(APP_NAME.'_template')){$sTemplateSet=G::cookie(APP_NAME.'_template');}
  91. else{
  92. $sTemplateSet=ucfirst($GLOBALS['_commonConfig_']['TPL_DIR']);
  93. G::cookie(APP_NAME.'_template',$sTemplateSet,3600);
  94. }
  95. }
  96. define('TEMPLATE_NAME',$sTemplateSet);
  97. define('TEMPLATE_PATH',APP_PATH.'/Theme/'.TEMPLATE_NAME);
  98. TemplateHtml::setTemplateDir(APP_PATH.'/Theme/'.TEMPLATE_NAME);
  99. if(is_dir(APP_PATH."/Theme/{$sTemplateSet}/Public/Php/Lang")){LangPackage::addPackageDir(APP_PATH."/Theme/{$sTemplateSet}/Public/Php/Lang");}
  100. if($sTemplateSet!='Default' && is_dir(APP_PATH."/Theme/Default/Public/Php/Lang")){LangPackage::addPackageDir(APP_PATH."/Theme/Default/Public/Php/Lang");}
  101. return;
  102. }
  103. static private function checkLanguage(){
  104. LangPackage::addPackageDir(APP_PATH.'/App/Lang');
  105. if(isset($_GET['l'])){
  106. $sLangSet=ucfirst($_GET['l']);
  107. G::cookie(APP_NAME.'_language',$sLangSet,3600);
  108. }
  109. elseif(G::cookie(APP_NAME.'_language')){$sLangSet=G::cookie(APP_NAME.'_language');}
  110. elseif($GLOBALS['_commonConfig_']['AUTO_ACCEPT_LANGUAGE'] && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  111. preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $arrMatches);
  112. $sLangSet=ucfirst($arrMatches[1]);
  113. G::cookie(APP_NAME.'_language',$sLangSet,3600);
  114. }
  115. else{$sLangSet=ucfirst($GLOBALS['_commonConfig_']['LANG']);}
  116. define('LANG_NAME',$sLangSet);
  117. Lang::setCurrentLang($sLangSet);
  118. define('LANG_PATH',APP_PATH.'/App/Lang/'.LANG_NAME);
  119. return;
  120. }
  121. static private function constantDefine(){
  122. define('__ENTER__',basename(__APP__));
  123. define('__FRAMEWORK__',__ROOT__.'/'.G::getRelativePath(__ROOT__.'/'.APP_NAME,WEB_ADMIN_HTTPPATH));// ????????
  124. define('__LIBCOM__',__FRAMEWORK__.'/LibCom');// LibCom????
  125. define('__APPPUB__',__ROOT__.'/'.APP_NAME.'/Static');// ????????????(???????)
  126. define('__THEME__',__ROOT__.'/'.APP_NAME.'/Theme');// ????
  127. define('__TMPL__',__THEME__.'/'.TEMPLATE_NAME);// ??????
  128. define('__PUBLIC__',__ROOT__.'/Public');// ????????
  129. define('__TMPLPUB__',__TMPL__.'/Public');// ????????
  130. define('__TMPL_FILE_NAME__',__TMPL__.'/'.($GLOBALS['_commonConfig_']['TMPL_MODULE_ACTION_DEPR']=='/' && MODULE_NAME==='public'?'Public':MODULE_NAME).$GLOBALS['_commonConfig_']['TMPL_MODULE_ACTION_DEPR'].ACTION_NAME.$GLOBALS['_commonConfig_']['TEMPLATE_SUFFIX']);// ??????
  131. define('__TMPL_FILE_PATH__',TEMPLATE_PATH.'/'.($GLOBALS['_commonConfig_']['TMPL_MODULE_ACTION_DEPR']=='/' && MODULE_NAME==='public'?'Public':MODULE_NAME).$GLOBALS['_commonConfig_']['TMPL_MODULE_ACTION_DEPR'].ACTION_NAME.$GLOBALS['_commonConfig_']['TEMPLATE_SUFFIX']);
  132. }
  133. static public function U(){
  134. return "var _ROOT_='".__ROOT__."',_MODULE_NAME_='".MODULE_NAME."',_ACTION_NAME_='".ACTION_NAME."',_ENTER_ ='".__ENTER__."',_APP_VAR_NAME_='app',_CONTROL_VAR_NAME_='c',_ACTION_VAR_NAME_='a',_URL_HTML_SUFFIX_='".$GLOBALS['_commonConfig_']['URL_HTML_SUFFIX']."';";
  135. }
  136. static public function U2(){
  137. return "var _ROOT_='".__ROOT__."',_MODULE_NAME_='".MODULE_NAME."',_ACTION_NAME_='".ACTION_NAME."',_APP_NAME_ ='".APP_NAME."',_APP_VAR_NAME_='app',_CONTROL_VAR_NAME_='c',_ACTION_VAR_NAME_='a',_URL_HTML_SUFFIX_='".$GLOBALS['_commonConfig_']['URL_HTML_SUFFIX']."';";
  138. }
  139. }