![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
小马哥~
这个作者很懒,什么都没留下…
展开
-
php与面向对象编程
为什么采用面向对象编程解决问题更容易设计计算机是为了解决人类的问题。这里有一个称为动态编程的过程,这是一种将大问题拆解为小问题的技术。其策略是先解决各个较小的问题,然后把所有结果汇总在一起形成一个更大的解决方案。模块化把一个问题分解为小的子问题,这个过程就是模块化过程。类与对象分解一个复杂问题会把它变换成多个简单的子问题,不过你需要有一种方法来组织这些模块,让它们相互协作共同处理所要解...原创 2020-03-16 22:12:16 · 131 阅读 · 0 评论 -
php7源码剖析
前言最近学习了php7源码,通过学习也知道了php是如何运转的,现在整理成博客方便自己和有需要的人查看。php7为什么这么快1:全新的zval 更节约的空间,栈上分配内存2:zend_string 存储字符串的Hash值,数组查询的时候不需要进行Hash计算3:在HashTable桶内直接存数据,减少了内存的申请次数,提升了cache命中率和内存访问速度4:zend_parse_par...原创 2020-03-16 17:59:13 · 338 阅读 · 0 评论 -
如何编写一个php扩展
前言本文采用7.4.3版本编写一个简单的扩展,供入门参考初始化通过ext_skel.php脚本创建了一个helloword扩展,脚本目录在/usr/local/php-7.4.3/ext目录下/usr/local/php7/bin/php ./ext_skel.php --ext helloword 接着会在当前目录下看到生成了一个helloworld文件夹加载方式介绍有两种加...原创 2020-03-16 17:35:06 · 266 阅读 · 0 评论 -
php基本语法实现的原理
break语法对于下面一段代码while(1) { break;}得到AST得到栈、符号表和常量得到指令集include语法对于下面一段代码include '1.php';echo 2;得到AST得到栈、符号表和常量得到指令集条件判断语法对于下面一段php代码$a = "php7";if($a == "php5") { echo "...原创 2020-03-15 21:32:21 · 187 阅读 · 0 评论 -
php代码的编译与执行
解释性语言也需要编译?我们来看下编译型语言和解释性语言的区别解析1:编译型的目标语言是二进制编码的机器码,可以在物理机上执行的2:解释型语言如php也是需要编译的,是实时编译,由php内核实现,涉及到词法、语法分析,最后生成的是opcodes,opcodes是类似于机器码的编码,但是这种编码物理机是不认识的,也是无法执行的,那么我们就需要在物理机上层加一个虚拟机,php内核在物理机上加了...原创 2020-03-15 17:19:49 · 969 阅读 · 0 评论 -
php运行的生命周期
前言通过本文可以了解到cli和fpm模式的生命周期、以及fastcgi协议。cli模式就是命令行模式cli模式的生命周期一共有5大阶段:php_module_startup //模块初始化阶段php_request_startup //请求初始化阶段php_execute_script //脚本执行阶段(读取你的代码,进行解析)php_request_shutdown //...原创 2020-03-15 11:25:40 · 760 阅读 · 0 评论 -
php7内存管理
前言C语言中申请内存:void *ptr = malloc(size) //size表示申请内存的大小释放内存:free(ptr) //引出一个问题 释放内存时候我们没有传size,那么它如何知道释放多少呢?答:维护了一个头部,来记录内存的大小,这只是一种方式。内存管理是为了解决什么问题?是为了解决free时不用传size,那它size是从哪确认的呢?是从free_map和map上,下...原创 2020-03-14 18:51:37 · 345 阅读 · 0 评论 -
php数组实现的原理
前言本文采用的php版本是7.4.3另外在了解数组实现前,需要知道zval是什么,如果不知道zval是什么,可以来我的这篇文章看下https://blog.csdn.net/onlymayao/article/details/104783731zend_array是什么php的array类型就是对应的zend_array...原创 2020-03-14 15:10:08 · 280 阅读 · 0 评论 -
php7引用类型的实现
前言在讲zend_reference之前,需要先了解下zval,如果还不了解zval是什么,可以先去我的这篇文章看下https://blog.csdn.net/onlymayao/article/details/104783731zend_reference是什么引用类型对应的就是zend_referencezend_reference的结构struct _zend_reference...原创 2020-03-13 21:26:12 · 123 阅读 · 0 评论 -
php7 zend_string与写时复制
在讲zend_string之前,需要先了解下zval,如果还不了解zval是什么,可以先去我的这篇文章看下https://blog.csdn.net/onlymayao/article/details/104783731原创 2020-03-13 20:26:58 · 284 阅读 · 0 评论 -
php7的安装
本文安装的版本是7.4.3,读者也可以去官网下载自己需要的版本传送门:https://www.php.net/downloads下载wget https://www.php.net/distributions/php-7.4.3.tar.gz解包tar xzvf php-7.4.3.tar.gz切到安装的目录cd php-7.4.3安装前看下都支持哪些可选参数./configur...原创 2020-03-11 21:25:11 · 157 阅读 · 0 评论 -
php7内核之zval
zval是什么zval是表示php变量的数据结构每个zval占用多大的空间一共占16个字节,value占8字节,u1和u2都占4字节。本文对应的php版本7.4.3下载地址:https://www.php.net/downloads源码文件php/include/php/Zend/zend_types.h文件整体结构struct _zval_struct { ze...原创 2020-03-11 20:19:04 · 288 阅读 · 0 评论 -
php7新增加的语法特性
1.传参和返回值类型声明strict_types名词解释:表示开启严格模式检查declare(strict_types=1);function test(int $a, int $b):int { return $a +$b;}2.NULL合并运算符//php7之前 我用三元运算符取个值是这样的$name = isset($_GET['name']) ? $_GET['na...原创 2020-03-10 21:03:20 · 321 阅读 · 0 评论 -
PHP 函数不存在问题解析
最近在升级php,升级完后发现报split函数不存在问题,从报错来看应该是这个函数被废弃了,然后查查PHP手册,发现PHP split函数在PHP 5.3.0之后就给弃用了。split函数的替代函数explode函数:速度更快~ 如不需要用到复杂的正则表则式。最佳选择了。preg_split函数:强大的兼容perl的正则表则式。比split快。str_split函数: 少用。...原创 2019-03-01 09:13:54 · 628 阅读 · 0 评论 -
PHP-FPM进程数修改
**php-fpm优化参数介绍**他们分别是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。...原创 2019-02-22 16:02:46 · 1203 阅读 · 0 评论 -
php将图片转成二进制流
//临时文件名$strTmpName = $_FILES[‘file’][‘tmp_name’];//转成二进制流$strData = base64EncodeImage(strTmpName );//输出用img标签输出就好function base64EncodeImage($strTmpName){ $base64Image = ''; $imageInfo ...原创 2019-01-09 18:51:03 · 5959 阅读 · 0 评论 -
phar的创建与使用
名词解释如果你之前开发过Java程序,我相信你肯定知道Jar文件(Jar是Java ARchive的缩写)。一个应用,包括所有的可执行、可访问的文件,都打包进了一个JAR文件里,使得部署过程十分简单。PHAR (“Php ARchive”) 是PHP里类似于JAR的一种打包文件。如果你使用的是 PHP 5.3 或更高版本,那么Phar后缀文件是默认开启支持的,你不需要任何其他的安装就可以使用它...原创 2019-01-10 16:44:18 · 1183 阅读 · 0 评论