php源码阅读笔记
刘泽奇1990
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PHP源码分析-函数array_merge的”BUG”
PHP源码分析-函数array_merge的”BUG”首先来看段代码.<?php$a = [ '2' => 'a' , 'k' => 'g' ];$b = [ '6' => 'h' , 'd' => 's' ];$c = array_merge( $a , $b );$d = array_merge( $b , $a );var_dump( $c , $d );运行结果 array(4) { [0]=>原创 2020-12-04 11:51:14 · 445 阅读 · 0 评论 -
PHP源码分析-进制转换函数分析
PHP源码分析-进制转换函数分析Php的进制转换大概可以分为两个类1.其他进制转换十进制bindec 二进制转换十进制hexdec 十六进制转换十进制octdec 八进制转换十进制base_convert在任意进制之间转换数字2.十进制转换其他进制decbin 十进制转换为二进制dechex 十进制转换为十六进制decoct 十进制转换为八进制base_convert在任意进制之间转换数字先来看看其他进制转换十进制以2进制为例先简单说明计算方法.例如:10101转换为10进原创 2020-10-12 19:46:23 · 286 阅读 · 1 评论 -
PHP源码分析-hex2bin函数源码分析
PHP源码分析-php2bin函数源码分析这个函数看字面意思是十六进制转二进制但是实际的意思十六进制转字符串.这也算是php的一个坑吧.需要说明一点是php中十六进制转二进制需要通过十进制中转.不知道是为了统一还是为了简单,下次分析下进制转换的函数.这次主要里看看php2bin函数,代码不多,但是大多数是位运算.看上去挺烧脑的.下边是相应的源码和注释说明static zend_string *php_hex2bin(const unsigned char *old, const size_t oldl原创 2020-10-10 18:15:28 · 1743 阅读 · 0 评论 -
PHP源码分析-命令行模式(cli模式)下echo实现的源码分析和执行追踪
PHP源码分析-命令行模式-cli模式-下echo实现的源码分析和执行追踪一般的php程序员打断点的方式都是echo ,而echo最为我们最常用的语句对于其源码剖析也是值得我们去好好探究一番的,今天就以cli模式下的echo来具体追踪下php是如何实现"echo"的php版本:PHP 7.3.18系统:linux首先看这段代码<?phpecho 1234;非常简短,就是在终端打印一个字符1234,执行结果也比较简单明了[root@localhost ~]# php 20200820.原创 2020-08-21 16:25:14 · 593 阅读 · 0 评论 -
PHP源码分析-流的实现之主要的用到的结构体和结构体间的关系
PHP源码分析-主要的用到的结构体和结构体间的关系原创 2020-08-05 20:54:49 · 160 阅读 · 0 评论 -
PHP源码分析-流的实现之file流的链接和glob流的链接
PHP源码分析-流的实现之file流的链接和glob流的链接显而易见file://流是对本地文件的处理,而glob的流则简单的做下描述.glob:// — 查找匹配的文件路径模式PHP的文档提供的说明…简单明了.下边是个简单的例子<?php$it = new DirectoryIterator("glob://D:/wamp64/www/*.php");foreach($it as $f) { printf("%s: %.1FK\n", $f->getFilename()原创 2020-08-05 20:41:23 · 288 阅读 · 0 评论 -
PHP源码分析-流的实现之ftp流的连接和data流的解析
PHP源码分析-流的实现之ftp流的连接和data流的解析前边几章分析完http的链接之后,这里趁热打铁分析下ftp是如何链接远程服务器的,并顺带分下一个特殊的协议data.(这里提一句本文的代码顺序和源码顺序不一致,为的是说明方便,C语言对待吗顺序是有要求的)首先从注册开始php_register_url_stream_wrapper("ftp", &php_stream_ftp_wrapper);然后下一步跟踪代码PHPAPI const php_stream_wrapper ph原创 2020-07-30 21:50:59 · 431 阅读 · 0 评论 -
PHP源码分析-流的实现之parse_url的源码分析
PHP-流的实现之parse_url的源码分析<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>此处是一个完整的url的组成,这里只对每个段做简单的说明, scheme:协议部分,例如:httpuser和password:用户名和密码,最原始的协议规定的用户名和密码,以http为例如果服务器设置了此原创 2020-07-29 20:58:31 · 511 阅读 · 0 评论 -
PHP源码分析-流的实现之普通http流的处理
PHP-流的实现之普通http协议的解析前一章处理说完标输入流的处理,这章看下php是如何针对普通的http网络流建立连接的.php_register_url_stream_wrapper("http", &php_stream_http_wrapper);类似上一章的方法搜索//首先是PHPAPI const php_stream_wrapper php_stream_http_wrapper = { &http_stream_wops, NULL, 1 /* is_ur原创 2020-07-28 20:35:28 · 466 阅读 · 0 评论 -
PHP源码分析-流的实现之标准输入
PHP-流的实现之标准输入前一篇文章写了如何去查找留的通用实现往后章针对一个具体的流来探索下php是如何实现的.先从简单的开始------标准输入流的封装-php://stdin首先接上一章,获取到’php://'流的实现php_register_url_stream_wrapper("php", &php_stream_php_wrapper);然后继续追踪代码查找php_stream_php_wrapper的赋值,此处的php_stream_php_wrapper可以认为是php流工厂原创 2020-07-27 20:27:00 · 877 阅读 · 0 评论 -
PHP源码分析-file_get_contents函数
PHP源码分析-file_get_contents函数php版本:7.3.4一直在做php方面的工作,总是在用php但也仅限于用,总想着有时间见去看看php的源码,总算得点时间去自己看下php的源码看完有些心得但总怕忘记,这里算是对php源码的一些记录.先大概说明下流程PHP的协议都是伪协议,比如:php://,http://,glob://等等,都是经过一层封装的协议.首先从file_get_contents函数源码进去然后层层追踪具体流程如下//file.c (ext\standard) li原创 2020-07-14 18:37:18 · 1151 阅读 · 0 评论
分享