php 源码阅读 -- 为什么?
12 July 2018

列出几个读源码的理由?不带目的的去读源码没意义,毕竟很多东西都是拿来就用

  1. opcode 的猜想和验证
    php 脚本在运行的时候会被编译成多条 opcode。一个 opcode 会有 opaction 和 op1, op2 分别是操作符号和两个操作数。例如 $a = 1 + 2 ,那么 opaction 就是 "+",op1 即是 1,op2 即是 2。具体的过程可以看这里 PHP-执行过程

    猜想:
    因为 php 是弱类型语言。弱类型语言的实现 zval struct 里面的 type (long, double, string, float ..)。那么,一个 opaction 就有可能对应几种不同的类型,例如

    $a = "1" + 2;
    $a = 1 + 2;
    

    php 在编译的时候,会生成几种 handler,例如

    ZEND_ADD_INT_INT_HANDLER
    ZEND_ADD_STRING_INT_HANDLER
    

    当然,上面的命名是我随便取的。看源码的好处就是为了证明的我的猜想

    vld 扩展可以看大概的 opcode

    pecl install vld
    php -dvld.active=1 -dvld.verbosity=3 /path/to/file.php
    
  2. php 变量的生命周期
    主要看 变量是何时分离,怎么分离,refcount,这块需要 “过程 1” 走通了才行

    http://joshuais.me/php7-nei-he-fen-xi-bian-liang-de-she-ji/

  3. 看 php 是如何处理 session
  4. 看 opcache 是什么,以及如何实现的
  5. php 类的实现和继承
    http://joshuais.me/php-lei-yu-dui-xiang-2/
  6. module extesion 区别 (不重要)
    http://yangxikun.com/php/2016/07/10/php-zend-extension.html

2018-07-12 02:39:12 暂时就 [1,2,3,4] 想法
2018-07-14 添加 5
2018-07-15 添加 6