微擎框架分析–应用入口到应用模块分析

微擎框架分析–应用入口到应用模块分析

微擎代码从应用入口到应用模块分析

微擎框架分析--应用入口到应用模块分析

微擎应用模块链接:
./index.php?c=home&a=welcome&do=account_ext&m=module_name
一: 点击此链接后,将执行 web/scource/home/welcom.ctrl.php文件中的$do == ‘account_ext’ 页面加载 template(‘home/welcome-ext’);
二:
微擎框架分析--应用入口到应用模块分析
跳转到home/welcome-ext界面后,通过ajax向url(‘module/welcome/get_module_info’, array(‘m’ => $modulename, ‘uniacid’ => $redirect_uniacid))请求跳转连接

三:
ajax请求web/scource/module/welcome.ctrl.php文件中的$do == ‘get_module_info’

if ($do == 'get_module_info') {
    $uni_modules_talbe = table('uni_modules');
    $uni_modules_talbe->searchWithModuleName($module_name);
    $module_info = $uni_modules_talbe->getModulesByUid($_W['uid'], $uniacid);
    $module_info = current($module_info['modules']);
    $module_info['welcome_display'] = false;
        $site = WeUtility::createModule($module_name);
    if (!is_error($site) && method_exists($site, 'welcomeDisplay')) {
        $module_info['welcome_display'] = true;
        $module_info['direct_enter_status'] = module_get_direct_enter_status($module_name);
    }

    $data = array(
        'module_info' => $module_info,
    );
    iajax(0, $data);
}

获取链接,location.href = redirect_url;跳转执行
web/scource/module/welcome.ctrl.php文件中的$do == ‘welcome_display’ 或者$do == ‘display’
四:

if ($do == 'display') {
    $notices = welcome_notices_get();
    template('module/welcome');
}

if ($do == 'welcome_display') {
    $site = WeUtility::createModule($module_name);
    if (!is_error($site)) {
        $method = 'welcomeDisplay';
        if(method_exists($site, $method)){
            define('FRAME', 'module_welcome');
            $entries = module_entries($module_name, array('menu', 'home', 'profile', 'shortcut', 'cover', 'mine'));
            $site->$method($entries);
            exit;
        }
    }
}

welcome_display将执行addons/应用模块标识/module.php文件中的public function welcomeDisplay() {}方法可进行页面跳转到自己模块主目录或者主文件(自定义)。

public function welcomeDisplay() {
        global $_GPC,$_W;
        ob_end_clean();
        $last_info = explode(',', $_GPC['__lastvisit_'.$_W['uid']]);
        $version_info = strstr($last_info[1], 'version_id');
        if (!empty($version_info)) {
            $version_arr = explode('=', $version_info);
            $url = $this->createWebUrl('dashboard', array('act' => 'display', '_n' => 0, 'version_id' => $version_arr[1]));
        } else {
            $url = $this->createWebUrl('dashboard', array('act' => 'display', '_n' => 0));
        }
        @header('Location: '.$url);
        exit;
    }

页面跳转执行应用模块相应的文件。
五:
跳转的页面

protected function createWebUrl($do, $query = array()) {
        $query['do'] = $do;
        $query['m'] = strtolower($this->modulename);
        return wurl('site/entry', $query);
    }

生成的跳转链接: http://yjn.localhost.com/web/index.php?c=site&a=entry&act=display&_n=0&do=dashboard&m=模块名
执行 web/source/site/entry.ctrl.php文件。
执行代码

$_GPC['__entry'] = $entry['title'];
$_GPC['__state'] = $entry['state'];
$_GPC['state'] = $entry['state'];
$_GPC['m'] = $entry['module'];
$_GPC['do'] = $entry['do'];
$_W['current_module'] = $module;

$site = WeUtility::createModuleSite($entry['module']);

define('IN_MODULE', $entry['module']);
if (!is_error($site)) {
    if ($_W['role'] == ACCOUNT_MANAGE_NAME_OWNER) {
        $_W['role'] = ACCOUNT_MANAGE_NAME_MANAGER;
    }
    $sysmodule = module_system();
    if (in_array($m, $sysmodule)) {
        $site_urls = $site->getTabUrls();
    }
        $method = 'doWeb' . ucfirst($entry['do']);
    exit($site->$method());
}
itoast("访问的方法 {$method} 不存在.", referer(), 'error');

执行 addons/应用模块/site.php下的doWebDashboard方法进行相关逻辑模块的执行。

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/code/2558.html

发表评论

登录后才能评论