前言
'最好的语言'发布了新的版本,一个划时代的大版本:PHP7。 PHP7修复了大量BUG,新增了功能和语法糖。这些改动涉及到了核心包、GD库、PDO、ZIP、ZLIB等熟悉和不熟悉的核心功能与扩展包。 PHP7移除了已经被废弃的函数,如mysql_系列函数在PHP5.5被废弃,在PHP7被删除。 PHP7的性能高于HHVM[HipHop Virtual Machine----Facebook][这句话不敢确定,但是大致应该是性能持平的],并且是PHP5.6的两倍。 http://www.php.cn/年12月3号PHP开发团队宣布PHP 7.0.0即将上市。本次发布标志着新的重要的PHP 7系列的开始。 PHP 7.0.0附带了一个新版本的Zend引擎中,无数的改进和新功能,如性能改善:PHP 7高达两倍快的PHP 5.6,显著减少内存使用,抽象语法树, 一致的64位支持,改进的异常层次结构,许多转化为异常致命错误,安全随机数发生器,删除旧的和不支持的SAPIs和扩展空合并运算符(?)返回和标量类型声明,匿名类,零成本断言,这是下一个主要版本的PHP。
这是核心团队的一个非常特殊的成就。 而且,它是许多活跃的社区成员难以置信努力的结果。事实上,这是一个新的PHP一代的崛起与巨大潜力。 恭喜大家,这是一个壮观的PHP的世界!感谢感谢所有的贡献者和支持者! 根据更新日志,我整理了一下涉及到的类库:Core、CLI_server、COM、Curl、Date、DBA、DOM、EXIF、Fileinfo、Filter、FPM、FTP、GD、GMP、hash、IMAP、Intl、JSON、LDAP、LiteSpeed、libxml、Mcrypt、Mysqli、OCI8、ODBC、Opcache、OpenSSL、Pcntl、PCRE、PDO、PDO_DBlib、PDO_mysql、PDO_OCI、PDO_pgsql、Phar、Phpdbg、Reflection、Session、OAP、SPL、SQLite3、tandard、Streams、Tokenizer、XMLReader、XMLRPC、XSL、Zlib、Zip |
1.PHP7的前世今生
以下摘自并修改与鸟哥微信
|
2.安装
这个就不说了,可以通过物理机,虚拟机,docker Windows,Linux,Mac上都是简单的操作。 |
3.测试
参见下面的特性,可以一一去测试,实践 |
4.新特性
1. 标量类型声明两种模式: 强制 (默认) 和 严格模式。
若无强制类型转换,会输出 int(1)bool(true)。 补充-备注:
2、返回值类型声明PHP 7 增加了对返回类型声明的支持。返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。
以上例程会输出:
补充-备注: 3、null合并运算符项目中存在大量同时使用三元表达式和 isset()的情况,新增了null合并运算符 (??) 这个语法糖。
4、太空船操作符(组合比较符)太空船操作符用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1。
5、通过define()定义常量数组
6、匿名类现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义。
7、Unicode codepoint 转译语法这接受一个以16进制形式的 Unicode codepoint,并打印出一个双引号或heredoc包围的 UTF-8 编码格式的字符串。 可以接受任何有效的 codepoint,并且开头的 0 是可以省略的。
旧版输出:u{9876} 8、Closure::call()
补充-备注
另外
资料参考PHP回调函数概念与用法实例分析:
9、为unserialize()提供过滤这个特性旨在提供更安全的方式解包不可靠的数据。它通过白名单的方式来防止潜在的代码注入。
10、IntlChar新增加的 IntlChar 类旨在暴露出更多的 ICU 功能。这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。Intl是Pecl扩展,使用前需要编译进PHP中,也可apt-get/yum/port install php5-intl
以上例程会输出:
11、预期预期是向后兼用并增强之前的 assert() 的方法。 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。 老版本的API出于兼容目的将继续被维护,assert()现在是一个语言结构,它允许第一个参数是一个表达式,而不仅仅是一个待计算的 string或一个待测试的boolean。
以上例程会输出:
12、Group use declarations从同一 namespace 导入的类、函数和常量现在可以通过单个 use 语句 一次性导入。
13、intp()接收两个参数作为被除数和除数,返回他们相除结果的整数部分。
输出:
14、CSPRNG新增两个函数:
可以加密地生产被保护的整数和字符串。
15、preg_replace_callback_array()
16、Session options现在,session_start()函数可以接收一个数组作为参数,可以覆盖php.ini中session的配置项。 把cache_limiter设置为私有的,同时在阅读完session后立即关闭。
17、生成器的返回值在PHP5.5引入生成器的概念。
输出为:
18、生成器中引入其他生成器在生成器中可以引入另一个或几个生成器,只需要写yield from functionName1
输出:
|
5.不兼容性
1、foreach不再改变内部数组指针在PHP7之前,当数组通过 foreach 迭代时,数组指针会移动。
PHP7输出:
当$array = [1, 1, 2]; 为输入:
PHP7输出:
2、foreach通过引用遍历时,有更好的迭代特性当使用引用遍历数组时,现在 foreach 在迭代中能更好的跟踪变化。
PHP7输出:
3、十六进制字符串不再被认为是数字含十六进制字符串不再被认为是数字
PHP5输出:
PHP7输出:
Notice: A non well formed numeric value encountered in /tmp/test.php on line 5 string(3) "foo" 4、PHP7中被移除的函数
5、new 操作符创建的对象, 不能以引用方式赋值给变量
PHP5输出: PHP7输出: 6、移除了 ASP 和 script PHP 标签使用类似 ASP 的标签,以及 script 标签来区分 PHP 代码的方式被移除。
7、从不匹配的上下文发起调用在不匹配的上下文中以静态方式调用非静态方法, 在 PHP 5.6 中已经废弃, 但是在 PHP 7.0 中, 会导致被调用方法中未定义 $this 变量,以及此行为已经废弃的警告。
PHP7输出:
8、在数值溢出的时候,内部函数将会失败
9、JSON 扩展已经被 JSOND 取代
10、INI 文件中 # 注释格式被移除
11、$HTTP_RAW_POST_DATA 被移除
12、yield 变更为右联接运算符在使用 yield 关键字的时候,不再需要括号, 并且它变更为右联接操作符,其运算符优先级介于 print 和 => 之间。 这可能导致现有代码的行为发生改变。可以通过使用括号来消除歧义。------ 没看明白??
|
6.参考
http://www.php.cn/php-weizijiaocheng-351228.html |
后续补充
...