本文整理匯總了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;
}