function dispatch($control, $action) { global $__core_env; if ($__core_env[$control . ':' . $action] == 1) { __dispatch_exit("control=" . $control . " action=" . $action . " 被重复执行"); return ""; } $__core_env[$control . ':' . $action] = 1; $pos = strrpos($control, '/'); if (false === $pos) { $control_name = $control; } else { $control_name = substr($control, $pos + 1, 100); } load_ctl($control); $control_name[0] = strtoupper($control_name[0]); $class = $control_name . 'Control'; if (!class_exists($class)) { __dispatch_exit($class . ' 控制器无效'); } if (substr($action, 0, 1) == '_') { __dispatch_exit($class . ' 控制器的 ' . $action . ' 该事件被禁止访问'); } $inst = new $class(); if ($inst && method_exists($inst, $action)) { $result = $inst->{$action}(); } else { __dispatch_exit($class . ' 控制器的 ' . $action . ' 事件不存在'); } return $result; }
/** * Controller调用 */ function ctlcall($module, $method, $args = array()) { //加载控制器接口文件 $module = str_replace(array('-'), array('/'), $module); load_ctl($module); $pos = strrpos($module, '/'); $class = $module; if (false !== $pos) { $class = substr($class, $pos + 1, 100); } $class[0] = strtoupper($class[0]); $className = $class . "Control"; return BaseCall("ctl", $className, $method, $args); }