当前位置: 首页>>代码示例>>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;未经允许,请勿转载。