本文整理汇总了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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}