首先我们学习此章节的内容大家可能需要有一些基础才行,接着对PHP内置字符窜数组相关函数会用的比较多一点,当然不太熟悉的朋友,其实可以借助手册看下去,手册下载地址我放在了另一篇博客里 链接(大家点击左边的链接两字可前去下载)。下面我们开始正题:

实际上我们知道,thinkPHP5从一开始最先执行的入口文件为 public下面的index.php,跟以往的TP3有所不同,官网给的友情提示是为了安全起见。那么接下来我们先分析public目录下的index.php入口文件,如图所示:

A:定义了一个常量,这里的作用我们会在后面讲到。

B:在首次打开此文件时加载了一个同级目录下的,thinkphp文件夹中的start.php。我们先        看一下这个thinkphp文件整体结构。

这三个文件夹里面存放的东西分别是,字符格式,thinkphp库,以及模板样式(这里放的是一些内置跳转 默认首页的样式),所以以后大家想要改掉一些样式可以在这里动刀。我们接着来看star.php文件。

这里我们看到文件第一步加载了同级目录下base.php。

B:静态调用执行了一个run方法 。那么我们就知道这个方法有可能就在base.php文件中,        接下来我们去看。下图为base.php的内容:

下面是他们分别的解释:

A:这里定义版本常量,具体作用是在命令行执行输出版本信息时会用到

B:定义THINK_START_TIME常量,microtime函数是PHP内置的,获取当前时间戳,可以到微秒,如果给定TRUE值,将会返回一个浮点数,这里作用可能是记录日志等作用吧。

C:定义THINK_START_MEM常量,memory_get_usage函数是获取内存使用的。如果设        置为 TRUE,获取系统分配的真实内存尺寸。如果未设置或者设置为 FALSE,将是                    emalloc() 报告使用的内存量。这里大概是会在内置的trace那个东西中用到吧。

D:这里定义文件格式后缀

E:定义文件分隔符,window下面跟Linux下面斜杠不同,DIRECTORY_SEPARATOR是          PHP内置常量(显示系统分隔符)

F:检测是否存在 否则定义框架路径常量,也就是这里的thinkphp文件的路径,紧跟分隔符        常量DS,因为框架很可能不一定在window下运行,比如Linux的服务器。

G:定义库文件常量 注意一下这里路径后都有斜杠,这样做的好处是为了方便,如果一个加        一个不加,到最后可能自己也记不清到底加没加斜杠了,所以这里作者统一都加了斜            杠。

H:定义核心路径常量

I: 定义trait常量

J:定义应用目录常量 此处在再项目入口文件出已经定义了一次 后面只是为了以防没有定           义,用内置变量获取再加入分隔符

K:定义根目录常量这里也就是WWW环境下的路径

L:定义extend扩展目录常量

M:定义vendor常量 也就是composer载入的那个文件夹

N:定义runtime缓存目录常量

O:定义日志常量

P:  定义配置缓存常量

R:定义配置文件常量 这里其实在又是我们需要动态改变一定的配置 比如说验证码我在某个        地方需要配置成5个数字 而其他地方我又不想要(所以通过这常量就可以实现动态配置            了)

S:配置文件后缀常量

T: 环境变量前缀常量

接着我们需要注意star.php中的namespace命名空间 这里指的是thinkphp\library\think目录处。

所以我们再回到start.php文件处,第二个东西APP::run()想必大家都明白了吧,他这里执行了thinkphp\library\think下的App.php文件中的run方法来初始化框架,不知道大家是否还记得整个项目的是可以配置多入口文件的,我们可以指定admin.php访问到后台也是在这个App.php文件中实现的。我们再回到base.php文件中,我们接着分析,在最后使用了两个方法,如下图:

这个配置文件实际就是在同star.php base.php的convertion.php文件,再通过调用thinkphp\library\think目录下的config.php类中的set方法实现的配置。

那么今天就先讲到这里了,下次我们接着分析,再见各位。

 
 

Thinkphp底层源码分析第一章相关推荐

  1. Thinkphp底层源码分析

    Thinkphp底层源码分析第一章 首先我们学习此章节的内容大家可能需要有一些基础才行,接着对PHP内置字符窜数组相关函数会用的比较多一点,当然不太熟悉的朋友,其实可以借助手册看下去.下面我们开始正题 ...

  2. QCad源码分析 第一章

    鉴于介绍Qcad相关的文章很少,决定写此博客,一来便于日后查找,二来要有分享精神.本文章基于Qcad3 .21.3.4的开源版本进行分析,分过程中难免有疏漏,如果有新的发现会及时更改,不足之处望高手指 ...

  3. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  4. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  5. 【mybatis源码】 mybatis底层源码分析

    [mybatis源码] mybatis底层源码分析 1.测试用例 2.开撸源码 2.1 SqlSessionFactory对象的创建与获取 2.2 获取SqlSession对象 2.3 获取接口的代理 ...

  6. 集合底层源码分析之HashMap《上》(三)

    集合底层源码分析之HashMap<上>(三) 前言 源码分析 HashMap主要属性及构造方法分析 tableSizeFor()方法源码分析 Node类源码分析 TreeNode类源码分析 ...

  7. 视频教程-Spring底层源码分析-Java

    Spring底层源码分析 鲁班学院-子路老师曾就职于谷歌.天猫电商等多家互联网公司,历任java架构师.研发经理等职位,参与并主导千万级并发电商网站与后端供应链研发体系搭建,多次参与电商大促活动技术保 ...

  8. ArrayList底层源码分析

    声明:本文为作者原创,请勿装载,如过转载,请注明转载地址 文章目录 ArrayList底层源码分析 1. 继承Serializable接口 2. 继承Cloneable接口 2.1 浅拷贝 2.2 深 ...

  9. Mybatis源码分析第一天------Mybatis实用篇

    Mybatis源码分析第一天------Mybatis实用篇 一切最基本的操作就是参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html ...

最新文章

  1. 手工构建ISO的基本步骤
  2. 登陆成功率 99%,云知声携手平安好医生推声纹登录系统
  3. 动车废票二维码将泄露个人信息 暂无防止破解法
  4. mysql修改i数据库名_数据库操作之mysqli语句的增删改查0424/14:36
  5. 腾讯云安全专家 Killer 告诉你,企业上云怎么做更安全
  6. Linux 退出vi编辑模式
  7. 五、MySQL联合查询学习笔记 + 查询总结(详解)
  8. 详细介绍MPLS路由协议的相关概念知识
  9. 关于直线,折线切割平面的问题
  10. python resize重置大小
  11. PYTHON莫名其妙的崩溃
  12. 计算机ppt操作知识,计算机基础知识:PPT常用操作(一)
  13. Adobe Flash Player 下载
  14. 【JS】console.log()打印出五彩斑斓的黑
  15. 加壳工具WinLicense使用教程,以v2.3.9.0为例
  16. 技术写作的两种方向和方法
  17. SCUBA的linux安装
  18. leetcode35.搜素插入位置
  19. Sublime Text 4 设置中文、汉化
  20. 安卓版计算机C语言翻译器,如何用C语言来制作翻译器

热门文章

  1. linux取消注释快捷键设置,Notepad++怎么增加整行删除快捷键?添加/取消区块注释?...
  2. 分享一个超好看回忆相册(代码自取)
  3. 二代身份证阅读器 C#、JAVA调用教程
  4. Kotlin 基础——Map集合详解
  5. kotlin中的Map集合类
  6. 正则表达式中小括号()的作用是什么
  7. openMVS:极线校正Fusiello
  8. 计算机学开发,Lazarus
  9. [导入]补脾益气--四神汤
  10. Html+Css+js实现春节倒计时效果(移动端和PC端)