PHPCMS源码分析(六)

/**
 * 调用件事
 */
private function init() {
    $controller = $this->load_controller();
    if (method_exists($controller, ROUTE_A)) {
        if (preg_match('/^[_]/i', ROUTE_A)) {
            exit('You are visiting the action is to protect the private action');
        } else {
            call_user_func(array($controller, ROUTE_A));
        }
    } else {
        exit('Action does not exist.');
    }
}
                            
/**
 * 加载控制器
 * @param string $filename
 * @param string $m
 * @return obj
 */
private function load_controller($filename = '', $m = '') {
    if (empty($filename)) $filename = ROUTE_C;
    if (empty($m)) $m = ROUTE_M;
    $filepath = PC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.$filename.'.php';
    if (file_exists($filepath)) {
        $classname = $filename;
        include $filepath;
        if ($mypath = pc_base::my_path($filepath)) {
            $classname = 'MY_'.$filename;
            include $mypath;
        }
        return new $classname;
    } else {
        exit('Controller does not exist.');
    }
}

 

以上为调用控制器的代码。

init()方法中$controller $this->load_controller();这行代码首先把整个模块类加载进来,并且初始化,并且赋值给$controller。

然后根据ROUTE_A的值来执行$controller中的ROUTE_A方法。

在显示首页的过程中根据参数'm'=>'content', 'c'=>'index', 'a'=>'init',加载了PC_PATH/modules/content/index.php文件,并执行了该类中的init()方法。

下面就要看看这个init()方法做了哪些工作。

转载于:https://www.cnblogs.com/zhangdaqian/p/3537758.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值