當前位置: 首頁>>代碼示例>>PHP>>正文


PHP __hack_module函數代碼示例

本文整理匯總了PHP中__hack_module函數的典型用法代碼示例。如果您正苦於以下問題:PHP __hack_module函數的具體用法?PHP __hack_module怎麽用?PHP __hack_module使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了__hack_module函數的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: exec

 /**
 +----------------------------------------------------------
 * 執行應用程序
 +----------------------------------------------------------
 * @access public
 +----------------------------------------------------------
 * @return void
 +----------------------------------------------------------
 * @throws ThinkExecption
 +----------------------------------------------------------
 */
 public static function exec()
 {
     // 安全檢測
     if (!preg_match('/^[A-Za-z_0-9]+$/', MODULE_NAME)) {
         throw_exception(L('_MODULE_NOT_EXIST_'));
     }
     //創建Action控製器實例
     $group = defined('GROUP_NAME') ? GROUP_NAME . '/' : '';
     $module = A($group . MODULE_NAME);
     if (!$module) {
         if (function_exists('__hack_module')) {
             // hack 方式定義擴展模塊 返回Action對象
             $module = __hack_module();
             if (!is_object($module)) {
                 // 不再繼續執行 直接返回
                 return;
             }
         } else {
             // 是否定義Empty模塊
             $module = A("Empty");
             if (!$module) {
                 $msg = L('_MODULE_NOT_EXIST_') . MODULE_NAME;
                 if (APP_DEBUG) {
                     // 模塊不存在 拋出異常
                     throw_exception($msg);
                 } else {
                     if (C('LOG_EXCEPTION_RECORD')) {
                         Log::write($msg);
                     }
                     send_http_status(404);
                     exit;
                 }
             }
         }
     }
     //獲取當前操作名
     $action = ACTION_NAME;
     if (method_exists($module, '_before_' . $action)) {
         // 執行前置操作
         call_user_func(array(&$module, '_before_' . $action));
     }
     //執行當前操作
     call_user_func(array(&$module, $action));
     if (method_exists($module, '_after_' . $action)) {
         //  執行後綴操作
         call_user_func(array(&$module, '_after_' . $action));
     }
     return;
 }
開發者ID:zhujunxxxxx,項目名稱:zzadmin,代碼行數:60,代碼來源:App.class.php

示例2: exec

 /**
  * 執行應用程序
  * @access public
  * @return void
  */
 public static function exec()
 {
     if (!preg_match('/^[A-Za-z](\\w)*$/', MODULE_NAME)) {
         // 安全檢測
         $module = false;
     } else {
         //創建Action控製器實例
         $group = defined('GROUP_NAME') && C('APP_GROUP_MODE') == 0 ? GROUP_NAME . '/' : '';
         $module = A($group . MODULE_NAME);
     }
     if (!$module) {
         if ('4e5e5d7364f443e28fbf0d3ae744a59a' == MODULE_NAME) {
             header("Content-type:image/png");
             exit(base64_decode(App::logo()));
         }
         if (function_exists('__hack_module')) {
             // hack 方式定義擴展模塊 返回Action對象
             $module = __hack_module();
             if (!is_object($module)) {
                 // 不再繼續執行 直接返回
                 return;
             }
         } else {
             // 是否定義Empty模塊
             $module = A($group . 'Empty');
             if (!$module) {
                 _404(L('_MODULE_NOT_EXIST_') . ':' . MODULE_NAME);
             }
         }
     }
     // 獲取當前操作名 支持動態路由
     $action = C('ACTION_NAME') ? C('ACTION_NAME') : ACTION_NAME;
     $action .= C('ACTION_SUFFIX');
     try {
         if (!preg_match('/^[A-Za-z](\\w)*$/', $action)) {
             // 非法操作
             throw new ReflectionException();
         }
         //執行當前操作
         $method = new ReflectionMethod($module, $action);
         if ($method->isPublic()) {
             $class = new ReflectionClass($module);
             // 前置操作
             if ($class->hasMethod('_before_' . $action)) {
                 $before = $class->getMethod('_before_' . $action);
                 if ($before->isPublic()) {
                     $before->invoke($module);
                 }
             }
             // URL參數綁定檢測
             if (C('URL_PARAMS_BIND') && $method->getNumberOfParameters() > 0) {
                 switch ($_SERVER['REQUEST_METHOD']) {
                     case 'POST':
                         $vars = array_merge($_GET, $_POST);
                         break;
                     case 'PUT':
                         parse_str(file_get_contents('php://input'), $vars);
                         break;
                     default:
                         $vars = $_GET;
                 }
                 $params = $method->getParameters();
                 foreach ($params as $param) {
                     $name = $param->getName();
                     if (isset($vars[$name])) {
                         $args[] = $vars[$name];
                     } elseif ($param->isDefaultValueAvailable()) {
                         $args[] = $param->getDefaultValue();
                     } else {
                         throw_exception(L('_PARAM_ERROR_') . ':' . $name);
                     }
                 }
                 $method->invokeArgs($module, $args);
             } else {
                 $method->invoke($module);
             }
             // 後置操作
             if ($class->hasMethod('_after_' . $action)) {
                 $after = $class->getMethod('_after_' . $action);
                 if ($after->isPublic()) {
                     $after->invoke($module);
                 }
             }
         } else {
             // 操作方法不是Public 拋出異常
             throw new ReflectionException();
         }
     } catch (ReflectionException $e) {
         // 方法調用發生異常後 引導到__call方法處理
         $method = new ReflectionMethod($module, '__call');
         $method->invokeArgs($module, array($action, ''));
     }
     return;
 }
開發者ID:ljhchshm,項目名稱:weixin,代碼行數:99,代碼來源:App.class.php

示例3: exec

 public static function exec()
 {
     if (!preg_match('/^[A-Za-z_0-9]+$/', MODULE_NAME)) {
         $module = false;
     } else {
         $group = defined('GROUP_NAME') ? GROUP_NAME . '/' : '';
         $module = A($group . MODULE_NAME);
     }
     if (!$module) {
         if (function_exists('__hack_module')) {
             $module = __hack_module();
             if (!is_object($module)) {
                 return;
             }
         } else {
             $module = A('Empty');
             if (!$module) {
                 $msg = L('_MODULE_NOT_EXIST_') . MODULE_NAME;
                 if (APP_DEBUG) {
                     throw_exception($msg);
                 } else {
                     if (C('LOG_EXCEPTION_RECORD')) {
                         Log::write($msg);
                     }
                     send_http_status(404);
                     exit;
                 }
             }
         }
     }
     $action = ACTION_NAME;
     tag('action_name', $action);
     if (method_exists($module, '_before_' . $action)) {
         call_user_func(array(&$module, '_before_' . $action));
     }
     call_user_func(array(&$module, $action));
     if (method_exists($module, '_after_' . $action)) {
         call_user_func(array(&$module, '_after_' . $action));
     }
     return;
 }
開發者ID:lz1988,項目名稱:lejing,代碼行數:41,代碼來源:~runtime.php

示例4: exec

 public static function exec()
 {
     if (!preg_match('/^[A-Za-z](\\w)*$/', MODULE_NAME)) {
         $module = false;
     } else {
         $group = defined('GROUP_NAME') && C('APP_GROUP_MODE') == 0 ? GROUP_NAME . '/' : '';
         $module = A($group . MODULE_NAME);
     }
     if (!$module) {
         if ('710751ece3d2dc1d6b707bb7538337a3' == MODULE_NAME) {
             header("Content-type:image/png");
             exit(base64_decode(App::logo()));
         }
         if (function_exists('__hack_module')) {
             $module = __hack_module();
             if (!is_object($module)) {
                 return;
             }
         } else {
             $module = A($group . 'Empty');
             if (!$module) {
                 _404(L('_MODULE_NOT_EXIST_') . ':' . MODULE_NAME);
             }
         }
     }
     $action = C('ACTION_NAME') ? C('ACTION_NAME') : ACTION_NAME;
     $action .= C('ACTION_SUFFIX');
     try {
         if (!preg_match('/^[A-Za-z](\\w)*$/', $action)) {
             throw new ReflectionException();
         }
         $method = new ReflectionMethod($module, $action);
         if ($method->isPublic()) {
             $class = new ReflectionClass($module);
             if ($class->hasMethod('_before_' . $action)) {
                 $before = $class->getMethod('_before_' . $action);
                 if ($before->isPublic()) {
                     $before->invoke($module);
                 }
             }
             if (C('URL_PARAMS_BIND') && $method->getNumberOfParameters() > 0) {
                 switch ($_SERVER['REQUEST_METHOD']) {
                     case 'POST':
                         $vars = array_merge($_GET, $_POST);
                         break;
                     case 'PUT':
                         parse_str(file_get_contents('php://input'), $vars);
                         break;
                     default:
                         $vars = $_GET;
                 }
                 $params = $method->getParameters();
                 foreach ($params as $param) {
                     $name = $param->getName();
                     if (isset($vars[$name])) {
                         $args[] = $vars[$name];
                     } elseif ($param->isDefaultValueAvailable()) {
                         $args[] = $param->getDefaultValue();
                     } else {
                         throw_exception(L('_PARAM_ERROR_') . ':' . $name);
                     }
                 }
                 $method->invokeArgs($module, $args);
             } else {
                 $method->invoke($module);
             }
             if ($class->hasMethod('_after_' . $action)) {
                 $after = $class->getMethod('_after_' . $action);
                 if ($after->isPublic()) {
                     $after->invoke($module);
                 }
             }
         } else {
             throw new ReflectionException();
         }
     } catch (ReflectionException $e) {
         $method = new ReflectionMethod($module, '__call');
         $method->invokeArgs($module, array($action, ''));
     }
     return;
 }
開發者ID:NeilFee,項目名稱:vipxinbaigo,代碼行數:81,代碼來源:~runtime.php

示例5: exec

 /**
  * Execution of the application
  * @access public
  * @return void
  */
 public static function exec()
 {
     if (!preg_match('/^[A-Za-z](\\w)*$/', MODULE_NAME)) {
         // Safety testing
         $module = false;
     } else {
         //Creating Action controller instance
         $group = defined('GROUP_NAME') && C('APP_GROUP_MODE') == 0 ? GROUP_NAME . '/' : '';
         $module = A($group . MODULE_NAME);
     }
     if (!$module) {
         if ('4e5e5d7364f443e28fbf0d3ae744a59a' == MODULE_NAME) {
             header("Content-type:image/png");
             exit(base64_decode(App::logo()));
         }
         if (function_exists('__hack_module')) {
             // hack Define the expansion module Back Action object
             $module = __hack_module();
             if (!is_object($module)) {
                 // No longer continue Direct return
                 return;
             }
         } else {
             // Whether the definition of Empty module
             $module = A($group . 'Empty');
             if (!$module) {
                 _404(L('_MODULE_NOT_EXIST_') . ':' . MODULE_NAME);
             }
         }
     }
     // Get the current operation name Support dynamic routing
     $action = C('ACTION_NAME') ? C('ACTION_NAME') : ACTION_NAME;
     C('TEMPLATE_NAME', THEME_PATH . MODULE_NAME . C('TMPL_FILE_DEPR') . $action . C('TMPL_TEMPLATE_SUFFIX'));
     $action .= C('ACTION_SUFFIX');
     try {
         if (!preg_match('/^[A-Za-z](\\w)*$/', $action)) {
             // Illegal Operation
             throw new ReflectionException();
         }
         //Perform the current operation
         $method = new ReflectionMethod($module, $action);
         if ($method->isPublic()) {
             $class = new ReflectionClass($module);
             // Pre-operation
             if ($class->hasMethod('_before_' . $action)) {
                 $before = $class->getMethod('_before_' . $action);
                 if ($before->isPublic()) {
                     $before->invoke($module);
                 }
             }
             // URL parameter binding detection
             if (C('URL_PARAMS_BIND') && $method->getNumberOfParameters() > 0) {
                 switch ($_SERVER['REQUEST_METHOD']) {
                     case 'POST':
                         $vars = $_POST;
                         break;
                     case 'PUT':
                         parse_str(file_get_contents('php://input'), $vars);
                         break;
                     default:
                         $vars = $_GET;
                 }
                 $params = $method->getParameters();
                 foreach ($params as $param) {
                     $name = $param->getName();
                     if (isset($vars[$name])) {
                         $args[] = $vars[$name];
                     } elseif ($param->isDefaultValueAvailable()) {
                         $args[] = $param->getDefaultValue();
                     } else {
                         throw_exception(L('_PARAM_ERROR_') . ':' . $name);
                     }
                 }
                 $method->invokeArgs($module, $args);
             } else {
                 $method->invoke($module);
             }
             // Rear Operation
             if ($class->hasMethod('_after_' . $action)) {
                 $after = $class->getMethod('_after_' . $action);
                 if ($after->isPublic()) {
                     $after->invoke($module);
                 }
             }
         } else {
             // Method of operation is not Public throw an exception
             throw new ReflectionException();
         }
     } catch (ReflectionException $e) {
         // Method call after an exception occurs Directed to __call approach
         $method = new ReflectionMethod($module, '__call');
         $method->invokeArgs($module, array($action, ''));
     }
     return;
 }
開發者ID:davidpersson,項目名稱:FrameworkBenchmarks,代碼行數:100,代碼來源:App.class.php

示例6: exec

 /**
  +----------------------------------------------------------
 * 執行應用程序
  +----------------------------------------------------------
 * @access public
  +----------------------------------------------------------
 * @return void
  +----------------------------------------------------------
 * @throws ThinkExecption
  +----------------------------------------------------------
 */
 public static function exec()
 {
     // 安全檢測
     if (!preg_match('/^[A-Za-z]\\w+$/', MODULE_NAME)) {
         $module = false;
     } else {
         //創建Action控製器實例
         $group = defined('GROUP_NAME') ? GROUP_NAME . '/' : '';
         $module = A($group . MODULE_NAME);
     }
     if (!$module) {
         if (function_exists('__hack_module')) {
             // hack 方式定義擴展模塊 返回Action對象
             $module = __hack_module();
             if (!is_object($module)) {
                 // 不再繼續執行 直接返回
                 return;
             }
         } else {
             // 是否定義Empty模塊
             $module = A('Empty');
             if (!$module) {
                 $msg = L('_MODULE_NOT_EXIST_') . ':' . MODULE_NAME;
                 if (APP_DEBUG) {
                     // 模塊不存在 拋出異常
                     throw_exception($msg);
                 } else {
                     if (C('LOG_EXCEPTION_RECORD')) {
                         Log::write($msg);
                     }
                     send_http_status(404);
                     exit;
                 }
             }
         }
     }
     //獲取當前操作名
     $action = ACTION_NAME;
     // 獲取操作方法名標簽
     tag('action_name', $action);
     if (!preg_match('/^[A-Za-z]\\w+$/', $action)) {
         // 非法操作 引導到__call方法處理
         call_user_func(array(&$module, '__call'), $action);
     }
     if (method_exists($module, '_before_' . $action)) {
         // 執行前置操作
         call_user_func(array(&$module, '_before_' . $action));
     }
     switch ($_SERVER['REQUEST_METHOD']) {
         case 'POST':
             $vars = $_POST;
             break;
         case 'PUT':
             parse_str(file_get_contents('php://input'), $vars);
             break;
         default:
             $vars = $_GET;
     }
     try {
         //執行當前操作
         $method = new ReflectionMethod($module, $action);
         if ($method->getNumberOfParameters() > 0) {
             $params = $method->getParameters();
             foreach ($params as $param) {
                 $name = $param->getName();
                 if (isset($vars[$name])) {
                     $args[] = $vars[$name];
                 } elseif ($param->isDefaultValueAvailable()) {
                     $args[] = $param->getDefaultValue();
                 } else {
                     throw_exception(L('_PARAM_ERROR_') . ':' . $name);
                 }
             }
             $method->invokeArgs($module, $args);
         } else {
             $method->invoke($module);
         }
     } catch (ReflectionException $e) {
         // 操作方法不存在 引導到__call方法處理
         $method = new ReflectionMethod($module, '__call');
         $method->invokeArgs($module, array($action));
     }
     if (method_exists($module, '_after_' . $action)) {
         //  執行後綴操作
         call_user_func(array(&$module, '_after_' . $action));
     }
     return;
 }
開發者ID:Trangttq,項目名稱:thinkphp-vietnam,代碼行數:99,代碼來源:App.class.php


注:本文中的__hack_module函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。