0%

ThinkPHP源码分析-4

2017年8月21日 上午11:37

反思1

  1. Tp源码中一个函数看似看挺长,其实目的很简单
  2. 长的原因是是要处理多种情况
    1. 上层设计中,让一个功能呢有多种操作方式,那么,下层对于每种方式都要做好适配
    2. 不同的操作环境

反思2

  1. 一个类定义的变量/函数都是static的
  2. 大量的使用static来维持自己的阶段性成果
  3. 随着程序的执行static变量不断的扩充
  4. 其实都属于Thinkphp_3.2.3/index.php 这个作用域
  5. 这个回答的为啥autoload()函数只定义在了think.class.php中,但是却可以让自己的项目实现自动加载
  6. Include/require 引入另一个php文件+执行代码
  7. Include/require 包含进来的php程序,可以直接使用上文中的变量
  8. include/require 可以理解直接剪贴过来了

反思3

  1. Think.class.php
    1. 这时候还没有真正的跑起来项目,还是在做它运行需要的准备工作
  2. 主要作用:
    1. 加载各种配置文件(都是return 数组),将他们变成static变量
      1. 由于TP要实现,同一功能根据不同的情景,采取不同的配置方法
      2. 所以,这里的配置文件的加载步骤比较繁琐
    2. 重写php本身的函数,自动加载类库、异常处理、错误处理等
      1. 这些功能的实现php本身就有很好的辅助函数
      2. 这就可以很方便的实现上面的功能
  3. 阅读框架,依靠
    1. 了解业务
    2. 语言功底
  4. TP这个框架思想其实比较简单,在这个过程中锻炼的是自己对语言本身的理解。
  5. 结论:框架学习过程中觉得难,并不是框架的作者发明了多少让人难以理解的代码过程,一定是由于自己:
    1. 业务本身不了解, 跟不上作者的思路。在具体的看之前,就要脑子中知道作者的目的是啥、有啥效果、要考虑啥特殊情况、大概有几个步骤等
    2. 语言功底中要知道语言本身他又那些特性、这些特性能如何巧用、已经封装好了那些功能、那些没有封装好