Ejemplo n.º 1
0
 public static function run($args = NULL, $prefix = "do_")
 {
     self::init();
     $app = $_GET['app'];
     $app or $app = 'home';
     //in_array($app, self::$apps) OR iPHP::throwException('运行出错!找不到应用程序:' . $app, 1001);
     $do or $do = $_GET['do'] ? (string) $_GET['do'] : 'iCMS';
     if ($_POST['action']) {
         $do = $_POST['action'];
         $prefix = 'ACTION_';
     }
     self::$app_name = $app;
     self::$app_do = $do;
     self::$app_method = $prefix . $do;
     self::$app_path = ACP_PATH;
     self::$app_tpl = ACP_PATH . '/template';
     self::$app_file = ACP_PATH . '/' . $app . '.app.php';
     define('APP_URI', __ADMINCP__ . '=' . $app);
     define('APP_FURI', APP_URI . '&frame=iPHP');
     define('APP_DOURI', APP_URI . ($do != 'iCMS' ? '&do=' . $do : ''));
     define('APP_BOXID', self::$app_name . '-box');
     define('APP_FORMID', 'iCMS-' . APP_BOXID);
     is_file(self::$app_file) or iPHP::throwException('运行出错!找不到文件: <b>' . self::$app_name . '.app.php</b>', 1002);
     iPHP::import(self::$app_file);
     $appName = self::$app_name . 'App';
     self::$app = new $appName();
     $app_methods = get_class_methods($appName);
     in_array(self::$app_method, $app_methods) or iPHP::throwException('运行出错! <b>' . self::$app_name . '</b> 类中找不到方法定义: <b>' . self::$app_method . '</b>', 1003);
     $method = self::$app_method;
     $args === null && ($args = self::$app_args);
     if ($args) {
         if ($args === 'object') {
             return self::$app;
         }
         return self::$app->{$method}($args);
     } else {
         return self::$app->{$method}();
     }
 }