phpcms v9 源码解析(3)pc_base::creat_app()
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并没有传参,
phpcms v9 源码解析(3)pc_base::creat_app()的更多相关文章
- phpcms v9 源码解析-1 index.php
这个是phpcms V9 的入口文件index.php. V9程序的执行绝大多数是从这个文件开始的,但不绝对,在项目下面的api.php和plugin.php是另外的入口文件,这里我们先不做深究. 在 ...
- phpcms v9 源码解析(4)content模块下的index.php文件的init()方法解析
在了解index.php中的init函数的时候,让我们先看看最开始的几行代码 1-5 第二行, defined('IN_PHPCMS') or exit('Nopermission resource ...
- phpcms v9 源码解析- 2 base.php
base.php在上文已经说过,是在PC中重要的一个文件,基本常量.核心类文件的加载都由它来完成. 9行,定义了一个常量 IN_PHPCMS,在系统的入口定义一个常量,在其他文件就判断是否这个常量被定 ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- jQuery2.x源码解析(缓存篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 缓存是jQuery中的又一核心设计,jQuery ...
- Spring IoC源码解析——Bean的创建和初始化
Spring介绍 Spring(http://spring.io/)是一个轻量级的Java 开发框架,同时也是轻量级的IoC和AOP的容器框架,主要是针对JavaBean的生命周期进行管理的轻量级容器 ...
随机推荐
- Bus Pass
ZOJ Problem Set - 2913 Bus Pass Time Limit: 5 Seconds Memory Limit: 32768 KB You travel a lot b ...
- 1.6.4 Uploading Structured Data Store Data with the Data Import Handler
1.使用DIH上传结构化数据 许多搜索应用索引结构化数据,如关系型数据库.DIH提供了一个这样的存储并索引结构化数据的机制.除了关系型数据库,solr可以索引来自HTTP的内容,基于数据源如RSS和A ...
- ListView的setSelectionFromTop()方法与setSelection()方法的联系
通常,app中的数据都是以ListView的形式展示的.默认地,把“新”数据添加到数据列表的尾部. 但是,如果是IM类型的app,比如查看历史消息这个模块.新数据并不是插到数据列表的尾部,而是插到 ...
- 【阿里云产品公测】OpenSearch初探
作者:阿里云用户 yqzzzz 这两天在折腾站内搜索,下午照例上阿里云网站看看ECS,OSS情况,恰巧看到免费公测的活动,咦,OpenSearch,看起来这不就是我要找的东西么! 1分钟时间填完申请 ...
- 干货:VLDB论文摘要-阿里技术突破性创新
阿里技术突破性创新 世界顶级大规模数据处理分析管理会议VLDB(VERY LARGE DATA BASE)于9月1日至5日在杭州举办,该会议也是也是大数据云计算领域的盛会,阿里巴巴两个团队在这个会议上 ...
- oracle PL/SQL(procedure language/SQL)程序设计(在PL/SQL中使用SQL)
在PL/SQL程序中,允许使用的SQL语句只有DML和事务控制语句,使用DDL语句是非法的.使用SELECT语句从数据库中选取数据时,只能返回一行数据.使用COMMIT, ROLLBACK, 和SA ...
- 《UNIX环境高级编程》学习心得 三
输入和输出 1.文件描述符 文件描述符(file descriptor)可以理解为内核在某个进程中访问一个文件时,内核向进程返回的一个非负整数.在内核使用open或creat打开一个现有文件或者创建一 ...
- BZOJ 1146: [CTSC2008]网络管理Network 树链剖分+线段树+平衡树
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 870 Solved: 299[Submit] ...
- 浅析js中的this
this的用法 this在日常javascript编码中很常见, 但是一直以来没有好好总结过. 今天在这里好好总结一下. 本文只讨论浏览器环境. this指向全局 var name = "w ...
- link_mysql的php版
<?php $str_sql_read="select count(*) as num from userinfo"; $str_sql_del="delete f ...