当前位置: 首页 > news >正文

PHP - 各版本对比 - 整理

1.应用场景

主要用于对比PHP各版本新特性。

2.学习/操作

 

1.文档阅读

PHP 7 新特性 - 收集_穿素白衫的少年的博客-CSDN博客

PHP 8 - 学习/实践_穿素白衫的少年的博客-CSDN博客

PHP: PHP 手册 - Manual -- 官方文档

权威的5.6、7.0、7.1、7.2、7.3和7.4 PHP基准(2020) - WP建站 -- 不同版本之间的性能基准测试

php版本之间的区别-PHP7-PHP中文网

2.整理输出

Note:

目前最常用版本为:

PHP 5.6

PHP 7.x

PHP 8.x

5.6、7.0、7.1、7.2、7.3、7.4。

其实,有时候大概知道,使用的版本有哪些特性,以及该版本之后的版本有哪些新特性即可

在实际开发时,做好程序测试即可,开发,测试,生产环境一定要保持一致。

2.1 PHP 5.2、5.3、5.4、5.5、5.6 版本区别对比以及新功能详解

PHP5.2之前:autoload, PDO 和 MySQLi, 类型约束

PHP5.2:JSON 支持

PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar

PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改

PHP5.5:yield, list() 用于 foreach, 细节修改

PHP5.6: 常量增强,可变函数参数,命名空间增强

2.2 指定版本的变化

PHP 5.3

PHP5.3算是一个非常大的更新,新增了大量新特征,同时也做了一些不向下兼容的修改:

1、匿名函数

$func function($arg){  

   echo $arg;

}

$func('hello');

2、新增了魔术方法 __invoke(),__callStatic();

随着匿名函数的加入,PHP 引入了一个新的魔术方法 __invoke().
该魔术方法会在将一个对象作为函数调用时被调用:

class A
{
    public function __invoke($str)
    {
        print "A::__invoke(): {$str}";
    }
}

$a = new A;
$a("Hello World");
输出毫无疑问是:  A::__invoke(): Hello World
__callStatic() 则会在调用一个不存在的静态方法时被调用。

3、命名空间

<?php

// 命名空间的分隔符是反斜杠,该声明语句必须在文件第一行。
// 命名空间中可以包含任意代码,但只有 **类, 函数, 常量** 受命名空间影响。
namespace XXOO\Test;

// 该类的完整限定名是 \XXOO\Test\A , 其中第一个反斜杠表示全局命名空间。
class A{}

// 你还可以在已经文件中定义第二个命名空间,接下来的代码将都位于 \Other\Test2 .
namespace Other\Test2;

// 实例化来自其他命名空间的对象:
$a = new \XXOO\Test\A;
class B{}

// 你还可以用花括号定义第三个命名空间
namespace Other {
    // 实例化来自子命名空间的对象:
    $b = new Test2\B;

    // 导入来自其他命名空间的名称,并重命名,
    // 注意只能导入类,不能用于函数和常量。
    use \XXOO\Test\A as ClassA
}

PHP 7

PHP 7 新特性 - 收集_穿素白衫的少年的博客-CSDN博客

PHP 8

PHP 8 - 学习/实践_穿素白衫的少年的博客-CSDN博客

后续补充

...

3.问题/补充

TBD

4.参考

参见上面文档列表

后续补充

...

相关文章:

  • JAVA 常见算法(选择排序,二分查找)
  • 【dotnet】Unity IL2CPP Mono
  • HC32L110(五) Ubuntu20.04 VSCode的Debug环境配置
  • 牛客 NC24307 [USACO 2012 Dec S]Milk Routing
  • . Flume面试题
  • 来了 Android开发中高级进阶通关全文档
  • CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING
  • 【Dubbo】入门搭建
  • 理解红黑树
  • 【精通内核】CPU控制并发原理CPU中断控制
  • 牛客 NC208246 胖胖的牛牛
  • 源码安装nginx及其配置
  • Vue element-ui表格嵌进度条
  • 前后数据传输协议规范
  • Unions
  • (三)从jvm层面了解线程的启动和停止
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【391天】每日项目总结系列128(2018.03.03)
  • ES6之路之模块详解
  • gops —— Go 程序诊断分析工具
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript实现分页效果
  • k8s如何管理Pod
  • orm2 中文文档 3.1 模型属性
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • php ci框架整合银盛支付
  • Python学习之路16-使用API
  • Spring Cloud Feign的两种使用姿势
  • SpringBoot 实战 (三) | 配置文件详解
  • SSH 免密登录
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 微信小程序:实现悬浮返回和分享按钮
  • 延迟脚本的方式
  • 一份游戏开发学习路线
  • 智能合约开发环境搭建及Hello World合约
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​【已解决】npm install​卡主不动的情况
  • ​iOS实时查看App运行日志
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (12)Hive调优——count distinct去重优化
  • (Git) gitignore基础使用
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (ZT)薛涌:谈贫说富
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)鸿鹄云架构一服务注册中心
  • (一) storm的集群安装与配置
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • *** 2003
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .net core webapi 大文件上传到wwwroot文件夹