69     return self::load_sys_classs('application');
         在前面我们已经知道了,这个load_sys_classs 静态方法,它加载了PC_CMS/libs/classes/application.class.php
          默认的这个函数这个方法是实例化的,所以我们找到application.class.php,看看他的构造函数吧

构造函数就简单的几行代码,第15行,加载了param.class.php ,后面定义的常量都和param有关,让我们来看看这个类文件
  12          先声明一个私有变量  $route_config
                 下面的构造函数get_magin_quotes_gpc()是检测是否开启这个配置,new_addslashes()函数在global.func.php函数中定义了。

22            三元运算 ,我们打开route.php文件 ,返回了一个二维数组,
                其中下标为 'default'',我们就直接取出 default这个数组了,
               但是为什么phpcms要做这个判断呢,其中SITE_URL在base.php中定义了
               define('SITE_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''));
               本地测试是 localhost ,是不是为了检测自己定义的路由规则呢?暂时不能知道了。
24-37    目前为止都是未执行的,因为 $this->route_config 其实是一个一维数组。
              你print_r($this->route_config)      Array( [m] => content [c] => index [a] => init)
              所以这个构造函数 ,只存在了个变量   $this->route_config

这3个函数就比较简单 返回Array( [m] => content [c] => index [a] => init)里面的数据
  
OK,我们返回application.class.php
                         $this->init();
               
   26行,直接调用了load_controller ,我们直接看load_controller函数
第44行   load_controller($filename='',$m='') 上面的init并没有传参,

而且在构造函数中 我们已经取出了 ROUTR_C,ROUTE_M的值
那么 此时的$filename=index  $m=content
所以 47-63行的代码意思为
      判断 这个模块下的这个文件是否存在,存在就加载,同样判断了有没有以MY_开头的自己的扩展,有的话也加载,并实例化
      如果没有 就exit('Controller does not exist.');
 
回到init函数,此时已经加载了控制器,并实例化了index.php
init() 这个函数,主要注意的就是俩个函数 method_exists()和call_user_func()
不明白的同学,看手册吧,
这个call_user_func(array($controller,ROUTE_A))
直接就执行了 index.php里面的init方法
 
 好了,application.class.php函数就说到这吧,如果一篇写太多,朋友们看的时候会头大。
下一章,我们进去content模块下的index.php控制器的init方法
                                                                          
                                                    To Be Continued

最新文章

  1. arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序
  2. JS高级程序设计笔记一
  3. jsp页面缓存清理
  4. jackson set properties to default value (取消让jackson 赋予默认值)
  5. WCF中修改接口或步骤名称而不影响客户端程序
  6. 总结swift语言常见的20个问题和回答
  7. 应用Druid监控SQL语句的执行情况--转载
  8. html5 的百度地图连接
  9. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2
  10. nodejs中exports与module.exports的区别详细介绍
  11. 【new File(String Path)加载资源问题】
  12. 1.NET是什么
  13. .Net 操作Excel表格
  14. Mysql生产指定时间段随机日期函数
  15. Flask 里的WEB表单应用
  16. Luogu P4317 花神的数论题
  17. Responsive响应式设计
  18. OpenCV学习笔记之课后习题练习2-5
  19. java 读取execl文件
  20. 【转】简说GNU, GCC and MinGW (Lu Hongling)

热门文章

  1. Linux分区有损坏修复
  2. mysql索引补充
  3. [Java] SSH框架笔记_框架分析+环境搭建+实例源码下载
  4. [转]DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
  5. 【python,logging】python中的logging模块
  6. Gradle实战:不同编译类型的包同设备共存
  7. 人体时钟hone hone clock
  8. JavaScript--Function类型(11)
  9. 手把手教你认识并搭建Nginx
  10. Linux下向SVN服务器添加新文件步骤