paip.php 5.0 5.3 5.4  5.5 -6.0的新特性总结与比较

PHP5的新特性 2

· 对象的参照过渡是默认的(default) 3

· 引入访问属性的限制 3

· 引入访问方法的限制 3

· 抽象类和抽象方法 3

· 接口 3

· final声明 3

· 名空间 3

· 类内常量 3

· 类变量 3

· 统一构建器 3

· 析构函数(Distructor) 3

· 其他附属特性 3

##PHP5.3的新特性你会有个全新的理解和感悟。 4

1、首先对之前滥用的语法进行了规范 4

2、MySQL驱动Mysqli 提高效率 4

3、PHP5.3安全和性能的提升 4

4、延迟静态绑定 4

?:  操作符 4

增强的ini文件支持  INI Magic 4

增强的error handling 5

(1)名字空间,用来解决命名被污染 6

(2)新的魔法函数 __callStatic 原来 __call的静态模式 6

(3)支持变量调用静态,可以通过$someClass::$method()调用 6

(4)新增日期函数date_create_from_format 6

(5)新增了类似JavaScript中的匿名函数和闭包 6

1. (6)新魔法常量 __DIR__ 来解决路径问题 6

循环垃圾收集 6

SPL 添加了新的内容,包括双重链接表、栈、堆和队列的实现, 7

##5.4主要包括以下特性: 9

###1. traits (多继承s解决方案) 9

Array dereferencing support  数组元素赋值到个变量 9

Short array syntax [] 9

3.DTrace support 9

4.Webserver SAPI   /// Buid-in web server 10

5. Upload progress 11

6. JsonSerializable Interface 11

7. Use mysqlnd by default 11

高精度计时器 11

##5.5新特性 12

1 生成器 yield关键字 12

2 finally关键字 12

3 foreach 支持list() 12

4 empty() 支持自定义函数了 12

5 非变量array和string也能支持下标获取了 12

6 类名通过::class可以获取 12

7 增加了opcache扩展 12

##PHP 6 新特性 13

Unicode支援 13

Web 2.0 特性 SOAP 13

XML增强 13

参考 14

PHP5的新特性

接下来请按照顺序看一下被强化的PHP5的性能。首先是最为重要的面向对象性能,类的实体特性在大幅度的被修改着。这里说的仅是关于类的新特性。

· 对象的参照过渡是默认的(default)

· 引入访问属性的限制

· 引入访问方法的限制

· 抽象类和抽象方法

· 接口

· final声明

· 名空间

· 类内常量

· 类变量

· 统一构建器

· 析构函数(Distructor)

· 其他附属特性

作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax

##PHP5.3的新特性你会有个全新的理解和感悟。

  1、首先对之前滥用的语法进行了规范

  众所周知PHP在语言开发过程中有一个很好的容错性,导致在数组或全局变量中包含字符串不使用引号是可以不报错的,

2、MySQL驱动Mysqli 提高效率

  3、PHP5.3安全和性能的提升

  如md5()大概提高了10%-15%的性能,更好的内存处理机制,提高软件性能的访问。解决了include(require)_once重复打开的问题,之前once都是用静态变量实现的,用gcc4编译的二进制文件将更小,整体性能提高了5%-15%

  4、延迟静态绑定

PHP的静态是在预编译时就固定好的,所以在继承的时候,父类里的self指的是父类,而不是子类。而php5.3加入了新的语法static,可以在运行时候捕捉当前类

?:  操作符

增强的ini文件支持  INI Magic

CGI/ FastCGI支持类似.htaccess的INI配置
每个目录下都可以有INI设置,ini的文件名取决于php.ini的配置,但是[PATH=/var/www/domain.com], [HOST=www.domain.com]段落的设置用户不能修改。

* CGI/FastCGI 支持".htaccess" 形式的INI控制
* 用户可以自己设定每个目录的INI在php.ini中通过[PATH=/var/www/domain.com]设定
* 优化错误处理
* 允许用户使用INI变量和常量任何定义的INI文件中
* 其他几个小的优化

用户自定义的php.ini(.htaccess) 文件名. 默认为".user.ini"
user_ini.filename = ".user.ini"

8. 扩展的 OpenSSL 函数

* 使用 OpenSSL Digest 函数

foreach (openssl_get_md_methods() as $d) {// MD4, MD5, SHA512... (12 all in all)
echo $d. " - ". openssl_digest("foo", "md5"); // acbd18db4cc2f85cedef654fccc4a4d8
}

增强的error handling

允许在ini文件中定义变量和常量,可以在程序中直接调用。
附上一段ini文件的例子

  5、更多新特性

  (1)名字空间,用来解决命名被污染

  (2)新的魔法函数 __callStatic 原来 __call的静态模式

  (3)支持变量调用静态,可以通过$someClass::$method()调用

  (4)新增日期函数date_create_from_format

  (5)新增了类似JavaScript中的匿名函数和闭包

1. (6)新魔法常量 __DIR__ 来解决路径问题

循环垃圾收集

垃圾收集是 PHP 开发人员在性能方面遇到的一个问题。PHP 有一个非常简单的垃圾收集器,它实际上将对不再位于内存范围(scope)中的对象进行垃圾收集。垃圾收集的内部方式是使用一个引用计数器,因此当计数器达到 0 时(意味着对该对象的引用都不可用),对象将被当作垃圾收集并从内存中删除。

这种方式工作得很好,但是如果一个对象使用父子关系引用另一个对象,那就会引发问题。在这种情况下,这些对象的引用计数器没有被收集,因此这些对象使用的内存仍然属于未引用的内存,并且直到完成请求后才能够进行分配。下面看一下关于这种问题的例子。

在 PHP V5.3 中,垃圾收集器将检测这些循环引用,并且能够释放它们所占用的内存,因此在执行脚本时 PHP 内存使用情况将保持平稳。当 Parent 类的每个引用被删除后,Parent 类中的 Child 类引用也将会被当作垃圾收集

SPL 添加了新的内容,包括双重链接表、栈、堆和队列的实现,

标准 PHP 库(Standard PHP Library,SPL)是 PHP V5 中新增的接口和类的集合,旨在解决标准问题。这些问题包括实现可迭代的对象,使对象具有数组的行为或实现一个链接的列表。这些类和方法的优点是它们是原生的 PHP,这意味用 PHP 本身实现它们会获得更快的速度。在很多情况下,这些类和方法还允许内部 PHP 函数直接使用这些对象,就像 Iterator 接口允许您使用 foreach 结构迭代对象一样。

PHP V5.3 向 SPL 添加了更多的类。我们前面提到一个类就是在 SPL 类 SplDoublyLinkedList 中实现的双重链接列表。它供其他两个新 SPL 类使用:SplStack(实现一个栈)和 SplQueue(实现一个队列)。

* 优化嵌套的目录迭代次数由文件系统迭代

* 引入 GlobIterator

* 各种各样的数据结构类: 双链表, 堆栈, 队列, 堆, 小型堆, 大型堆, 优先级队列

* 其他的很绕口的一些特征

让我们看一看如何使用 SplStack 类实现一个栈。

使您获得了一些常见的数据结构并且可以轻松使用它们。

清单 11. PHP V5.2 及之前版本不能恰当地对父子类关系进行垃圾收集

getopt() 优化

getopt() 优化

* 影响 Windows 平台

* 本地的执行不依赖于本地getopt()实现.

* 跨平台支持长选项 (--option)
// input: --a=foo --b --c
var_dump(getopt("", array("a:","b::","c")));
/* output: array(3) {
["a"]=>
string(3) "foo"
["b"]=>
bool(false)
["c"]=>
bool(false)
} */

XSLT Profiling
* 引入 Xslt Profiling 通过 setProfiling()实现

* 影响 Windows 平台

* 本地的执行不依赖于本地getopt()实现.

##5.4主要包括以下特性:

###1. traits (多继承s解决方案)

Array dereferencing support  数组元素赋值到个变量

Short array syntax []

3.DTrace support

php5.4新功能Traits介绍

1. traits (多继承s解决方案)

Traits是在5.4中新增的一个用于实现代码重用的方法。

php是一种单一继承的语言,我们无法像java一样在一个class中extends多个基类来实现代码重用,现在Traits能解决这一代码重用的问题,它能让开发者在多个不同的class中实现代码重用。

Traits和class在语义的定义上都是为了减少代码的复杂性,避免多重继承的问题。

Traits 和class相似,但是仅用于以统一和较细粒度的方式来提供一组功能,在Traits内部无法进行实例化,即不存在类似class的构造函数__construct()。Traits作为一个php传统继承的扩展并实现水平集成;因此,在应用程序的class中可以不再需要继承。

Traits提供了一种灵活的代码重用机制,即不像interface一样只能定义方法但不能实现,又不能像class一样

Traits (横向重用/多重继承)是一组结构很像“类”(但不能实例化)的方法,它可以让开发人员在不同的类中轻松地重用方法。 PHP为单继承语言,子类只能继承一个父类,于是Traits来了。

Traits的最佳应用是多类之间可以共享相同的函数

2.Array dereferencing support  数组元素赋值到个变量

echo myfunc()[1];

3.DTrace support

DTrace是一个性能分析工具, 可以跟踪出函数调用点,返回点等数据, 对于这个我也不是很了解, 感兴趣的同学可以参看PHP 5.3.99-DEV AND DTRACE PART I

4.Webserver SAPI   /// Buid-in web server

最后, PHP5.4还新增了一个SAPI, 这个SAPI将支持直接把PHP当做Websever使用:

PHP5.4内置了一个简单的Web服务器,这样在做一些简单程序就方便多了,省去了环境配置的工作,特别对于初学者来说

3. Short array syntax

PHP5.4提供了数组简短语法:

1

$arr = [1,'james', 'james@fwso.cn'];

$fruits = array('apples', 'oranges', 'bananas'); // "old" way

// 学Javascript的数组了

$fruits = ['apples', 'oranges', 'bananas'];

// 关联数组Map in java

$array = [

'foo' => 'bar',

'bar' => 'foo'

];

5. Upload progress

Session提供了上传进度支持,通过$_SESSION["upload_progress_name"]就可以获得当前文件上传的进度信息,结合Ajax就能很容易实现上传进度条了。

参考:http://www.laruence.com/2011/10/10/2217.html

6. JsonSerializable Interface

实现了JsonSerializable接口的类的实例在json_encode序列化的之前会调用jsonSerialize方法,而不是直接序列化对象的属性。

参考:http://www.laruence.com/2011/10/10/2204.html

7. Use mysqlnd by default

现在mysql, mysqli, pdo_mysql默认使用mysqlnd本地库,在PHP5.4以前需要:

高精度计时器

此次引入了$_SERVER['REQUEST_TIME_FLOAT']数组变量,微秒级精度(百万分之一秒,float类型)。对于统计脚本运行时间会非常有用:

##5.5新特性

1 生成器 yield关键字

yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php

查看文档,能知道yield的一个功能就是能有效的降低迭代的内存开销。比如官网的这个xrange例子:

2 finally关键字

这个和java中的finally一样,经典的try ... catch ... finally 三段式异常处理。

3 foreach 支持list()

4 empty() 支持自定义函数了

之前empty()中的参数是不能为函数的。现在可以了

5 非变量array和string也能支持下标获取了

6 类名通过::class可以获取

7 增加了opcache扩展

使用opcache会提高php的性能,你可以和其他扩展一样静态编译(--enable-opcache)或者动态扩展(zend_extension)加入这个优化项。

##PHP 6 新特性

PHP 6目前已經作為開發者快照使用,所以你可以下載和試用一下這篇文章列出很多特性,這些特性已經在目前的快照中實現了。見資源。

Unicode支援

在PHP的核心函數中,有很多對Unicode字串的支援的改進,這些新特性將產生大幅度的影響因為它允許PHP為國際字元提供更多的支援。所以如果一個開發者或者架構師使用不同的語言,例如Java程式語言,是因為它具有超過PHP的國際化支援的話,當支援改進時他會花一點時間來考慮一下PHP。

因為今天你已經可以下載到開發者

Web 2.0 特性 SOAP

依賴於你怎麼使用PHP和你現在Script的是什麼樣子的,現在的語言和語法差異,可能會或者不會最大程度的影響下面一些特性,這是指那些直接讓你引用的Web 2.0功能到你的PHP應用程式。

SOAP
SOAP是一種網路服務「說 話」的協議,並且支援不少其他語言,例如Java和微軟的.NET,雖然有其他的方法來驅動和使用網路服務,比如 表象化狀態轉變(Representational State Transfer )REST,SOAP仍然在使不同平台具有可操作性中是最常用的。此外,SOAP在PHP擴充和PEAR庫中使用,SOAP在PHP中預設是不支援的,因 此你啟用這個擴充或者叫你的ISP啟用。此外,PEAR包允許你建立SOAP客戶端和伺服器,如SOAP包。

如果你改變了預設設定,SOAP將會在PHP 6中啟用。這個擴充將提供你很容易的的實現SOAP客戶端和SOAP服務,允許你編寫的應用提供使用或者網路服務。

如果SOAP擴充是預設設定,那就意味著你不能在PHP中設定它們,如果您開發的PHP應用程式並且它們發佈到一個ISP伺服器上,您可能需要檢查一下你的ISP,以驗證SOAP並啟用為他們升級。

XML增强

在PHP 5.1中XMLReader 和XMLWriter已經變成PHP核心的一部分,這使你工作起來更輕鬆如果在你的PHP程式中需要使用到XML的話。和SOAP擴充一樣,如果你使用SOAP或者XML這是個好消息因為PHP 6比已經出爐的PHP4 更適合你。

参考

PHP5.0新特性_PHP_中国网管联盟bitsCN.com.htm

PHP5.3之后的新特性_PHP教程_编程技术.htm

PHP5.3新特性介绍.htm

PHP V5.3 中的新特性,第 1 部分  对象接口的变化.htm

PHP 5.3 5.4新特性整理 – 【人人分享-人人网】.htm

traits:Traits技术初探 - 大CC - 博客园.htm

PHP5.4的新特性   风雪之隅.htm

PHP5.4新特性   喵了个咪.htm

PHP5.4发布:新特性与改动_PHP资讯_精品学习网.htm

PHP 5.5 新特性 - 轩脉刃 - 博客园.htm

PHP 6 的新特性 - 討論PHP的  - 博客园.htm

paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较相关推荐

  1. 最好的浏览器排行榜_PG是最好的数据库;TiDB 4.0前瞻;SequoiaDB高可用原理;20c DG新特性... 数据库周刊第18期...

    热门资讯 1. 2020年4月数据库流行度排行:MySQL 成事实王者,国产openGauss引期待 [摘要]2020年4月 DB-Engines 数据库流行度排行出炉.在本月的排行榜上,Oracle ...

  2. MongoDB 5.0 来了,原生时序、版本化 API 新特性悉数登场

    作者 | 伍杏玲 出品 | CSDN云计算(ID:CSDNcloud) 据 DB-Engines 数据库最新 7 月流行度排行榜显示,前五名十分稳定:Oracle.MySQL.Microsoft SQ ...

  3. 直播 | RT-Thread 4.0.4 版本代码 Release啦!一起来参与新特性解读会吧~

    时光如梭,离RT-Thread 4.0.3 版本的发布已有一段时间了. 今天,我们RT-Thread 4.0.4 版本代码终于Release啦! 细数这一年的变化,真的很多! 内核方面,我们对 IPC ...

  4. c语言 字符串 正序再倒序_新特性解读 | MySQL 8.0 索引特性3 -倒序索引

    原创作者:杨涛涛 我们今天来介绍下 MySQL 8.0 引入的新特性:倒序索引. MySQL长期以来对索引的建立只允许正向asc存储,就算建立了desc,也是忽略掉. 比如对于以下的查询,无法发挥索引 ...

  5. 全面剖析 Knative Eventing 0.6 版本新特性

    前言 Knative Eventing 0.6 版本已经于5月15号正式发布.相比于0.5版本,此次发布包含了一些重要特性及更新.针对这些新特性以及更新,我们如何快速.精准的定位主要技术点.本篇文章针 ...

  6. 中累计直方图_新特性解读 | MySQL 8.0 直方图

    原创作者:杨涛涛 MySQL 8.0 推出了histogram,也叫柱状图或者直方图.先来解释下什么叫直方图. 关于直方图 我们知道,在DB中,优化器负责将SQL转换为很多个不同的执行计划,完了从中选 ...

  7. ABP 6.0.0-rc.1的新特性

      2022-07-26官方发布ABP 6.0.0-rc.1版本,本文挑选了几个新特性进行了介绍,主要包括LeptonX Lite默认主题.OpenIddict模块,以及如何将Identity Ser ...

  8. Android 6.0新特性

    注:本文是从谷歌官网翻译过来的,放这里便于查阅和消化理解,更多详细知识点请自备梯子访问官网~ Android 6.0(API 级别 23)除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种 ...

  9. mysql3819错误,MySQL 8.0新特性 ― 检查性约束的使用简介

    前言 在MySQL 8.0版本中,引入了一个非常有用的新特性 ― 检查性约束,它可以提高对非法或不合理数据写入的控制能力:接下来我们就来详细了解一下. 检查性约束 创建.删除与查看 (1)可以在建表时 ...

  10. Android Q(10.0 API29)版本新特性和兼容性适配

    摘要 1.本文档基于谷歌AndroidQ官方文档和一加Q版本应用兼容性整改指导 2.本文档主要对影响比较大的部分进行简单总结,内容并不全面: 3.版本号对应关系: Android-Q = Androi ...

最新文章

  1. 影响计算机算法世界的十位大师(上)
  2. Quartz.Net 调度框架配置介绍
  3. 2022年初,给5年内还想做产品经理的提个醒!
  4. 多值参数-数字累加案例演练
  5. 页面加载图片前用空态图代替真正图片
  6. string 找出所有数字 index_发现规律,解决整数转罗马数字
  7. matlab 删除cell 中的 0 元素
  8. linux 脚本 格式化,Shell脚本批量格式化文件名
  9. Rational ClearCase批量merge合并
  10. 大数据可视化平台Demo
  11. c语言以e为底和以10为底对数,以e为底的运算法则
  12. 介绍一个免费的开源网站(BootCDN)
  13. Typec手机有线网卡网线转网口转接口快充方案
  14. 易捷行云EasyStack入选2021信创云TOP10
  15. 如何实现微信小程序的横屏及适配
  16. 利用Python实现word文档合并
  17. 面试官:关于负载均衡你了解多少 | Nginx面试题 | Nginx架构
  18. geoserver给天地图添加服务,给线加标注
  19. Windows的cmd中cd指令切换路径
  20. 浏览器缓存及实现原理

热门文章

  1. App测试1-App测试概述
  2. 12.1-12.5 LNMP架构介绍 , MySQL安装 , PHP安装, Nginx介绍
  3. 谷歌研发开源协议,助听器有望原生支安卓系统
  4. SpringCloud学习5-如何创建一个服务提供者provider
  5. 简单比较 http https http2
  6. mmap和MappedByteBuffer
  7. 杭电 1421 搬寝室
  8. 【通信基础知识】白噪声、相关解调和相干解调
  9. 取消UltraEdit提示“文件可能不是DOS格式”
  10. 企业架构:使用TOGAF进行产品开发