PHP7新特性 What will be in PHP 7/PHPNG

官网:http://www.php7.ca/   https://wiki.php.net/phpng

PHP7将在2015年10月正式发布,PHP7
,将会是PHP脚本语言的重大版本更新,同时将带来大幅的性能改进和新的特性,以及改进一些过时功能。 该 发布版本将会专注在性能加强,源自PHP版本树中的phpng分支。在硅谷公司的ZendCon会议,PHP工具厂商Zend技术官方讨论phpng和 PHP7的进度。“(本次升级)真正专注于帮助业界的应用程序显著加强执行速度,再加上,我们在PHP中的其他改进,”Zend的首席执行官安迪特曼斯
(曾参与了PHP语言的持续开发和发展)表示。

我们来看看官网给出的php7 特性:

PHP7新特性( What will be in PHP 7 / PHPNG )

  • Performance Improvements with the addition of PHPNG engine.

使用PHPNG引擎来提升性能

  • JIT - Just in Time compiler

即时编辑器 JIT Compiler_百度百科

  • Abstract Syntax Tree for compilation

抽象语法树编译

  • Asynchronous refactoring of the I/O layer.

对I/O层的异步重构。

  • Multi-threaded build in Web Server

多线程构建Web服务器

  • Expanded use of ->, [], (), {}, and :: operators

扩展使用 ->, [], (),
{}, 和 :: 符号

  • 100% increase in performance

性能提升 100% (应该是QPS)

  • Cool Name: PHPNG

酷名:PHPNG引擎

为啥直接PHP5.6跳到PHP7(Reasons given why we need to skip to PHP 7)

There are several reasons of why we shouldn‘t reuse version 6 for the next major version of PHP.

  • First and foremost, PHP 6 already existed and it was something completely different. The decimal system (or more accurately the infinite supply of numbers we have) makes it easy for us to skip a version, with plenty more left for future versions to come.
  • While it‘s true that the other PHP 6 never reached General Availability, it was still a very widely published and well-known project conducted by php.net that will share absolutely nothing with the version that is under discussion now. Anybody who knew
    what PHP 6 is (and there are many) will have a strong misconception in his or her mind as to the contents and features of this new upcoming version (essentially, that it‘s all about Unicode).
  • PHP 6, the original PHP 6, has been discussed in detail in many PHP conferences. It was taught to users as a done-deal, including detailed explanations about features and behavior (by php.net developers, not ‘evil‘ book authors).
  • PHP 6 was widely known not only within the Internals community, but around the PHP community at large. It was a high profile project that many - if not most - PHP community members knew about.
  • There‘s lots of PHP 6 information, about the original PHP 6, that exists around the web. Books are the smallest part of the problem.
  • Unlike the ‘trivia question‘ of ‘why did we skip into 7?‘, reusing version 6 is likely to call real confusion in people‘s minds, with ample information on two completely different versions with entirely different feature sets that have
    the exact same name.
  • Skipping versions isn‘t unprecedented or uncommon in both open source projects and commercial products. MariaDB, jumped all the way up to version 10.0 to avoid confusion, Netscape Communicator skipped version 5.0 directly into 6.0, and Symantec skipped
    version 13. Each and every one of those had different reasons for the skipping, but the common denominator is that skipping versions is hardly a big deal.
  • Version 6 is generally associated with failure in the world of dynamic languages. PHP 6 was a failure; Perl 6 was a failure. It‘s actually associated with failure also outside the dynamic language world - MySQL 6 also existed but never released. The perception
    of version 6 as a failure - not as a superstition but as a real world fact (similar to the association of the word ‘Vista‘ with failure) - will reflect badly on this PHP version.
  • The case for 6 is mostly a rebuttal of some of the points above, but without providing a strong case for why we *shouldn‘t* skip version 6. If we go with PHP 7, the worst case scenario is that we needlessly skipped a version. We‘d still have an infinite
    supply of major versions at our disposal for future use. If, however, we pick 6 instead of 7 - the worst case scenario is widespread confusion in our community and potential negative perception about this version.

Supported SAPI

  • cli
  • cgi
  • fpm
  • apache (FastCGI and FPM might be significantly faster if mod_php is built as PIC)
  • apache2handler

Supported Extensions

  • bcmath
  • bz2
  • calendar
  • com_dotnet
  • ctype
  • curl
  • date
  • dba
  • dom
  • enchant
  • ereg
  • exif
  • fileinfo
  • filter
  • ftp
  • gd
  • gettext
  • gmp
  • hash
  • iconv
  • imap
  • intl
  • json
  • ldap
  • libxml
  • mbstring
  • mcrypt
  • mysql
  • mysqli
  • mysqlnd
  • odbc (tested with unixODBC and MySQL driver)
  • openssl
  • OPcache
  • pcntl
  • pcre
  • PDO
  • pdo_firebird
  • pdo_mysql
  • PDO_ODBC (tested with unixODBC and MySQL driver)
  • pdo_pgsql
  • pdo_sqlite
  • pgsql
  • Phar
  • posix
  • pspell
  • readline
  • recode
  • Reflection
  • session
  • shmop
  • SimpleXML
  • snmp
  • soap
  • sockets
  • SPL
  • sqlite3
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tidy
  • tokenizer
  • wddx
  • xml
  • xmlreader
  • xmlwriter
  • xsl
  • zip
  • zlib

Unsupported Extensions (not converted yet)

  • interbase
  • mssql
  • oci8
  • pdo_dblib
  • pdo_oci
  • sybase_ct

时间: 2024-11-05 22:02:52

PHP7新特性 What will be in PHP 7/PHPNG的相关文章

PHP7新特性及Laravel常见知识梳理

由于个人技术水平有限,答案或许会有偏差,欢迎大家指正. PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try...catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些"用后即焚"的完整类定义 -- 了解更多文章底部有 PHP7 新特性链接 为什么 PHP7 比 PHP5 性能提升了? 变量存

trait,interface,abstract,PHP7新特性以及PHP闭包学习

1月8日trait 自PHP5.4.0起,PHP实现了一种代码复用的方法 称为traittrait 是为 PHP这类单继承语言准备的一种代码复用机制 .trait 为了减少单继承语言的限制,使开发者可以在不同层级中独立的调用 trait中的 方法 trait和类的组合使用,避免了一般类的多继承和混入类(Mixin)相关的典型问题. trait 类似于一个类trait 不能被实例化 使用方法 其他类中use,既可单独调用例子:trait say{public function say_word()

PHP7新特性 整理制作

1.类型的声明. 3.新增操作符“<=>” 4.新增操作符“??” 5.define() 定义常量数组 7.匿名函数 10.命名空间引用优化 // PHP7以前语法的写法 use FooLibrary\Bar\Baz\ClassA; use FooLibrary\Bar\Baz\ClassB; // PHP7新语法写法 use FooLibrary\Bar\Baz\{ ClassA, ClassB}; 13. PHP7 错误处理 PHP7 改变了大多数错误的报告方式.不同于PHP5的传统错误报

PHP7新特性的介绍

关于PHP 20年的发展历史: 迄今为止最流行的WEB开发语言: 超过82%的网站都会使用PHP作为他们的服务端开发语言: 新特性介绍 PHP NG – Zend Engine 3 抽象语法树 64位的 INT 支持 统一的变量语法 新增Closure::call() 一致性foreach循环 匿名类的支持 新增 <=>.**.?? .\u{xxxx}操作符 增加了返回类型的声明 增加了标量类型的声明 核心错误可以通过异常捕获 增加了上下文敏感的词法分析 PHP NG ZVAL 大小从24字节

PHP7 新特性 简介

整理了一些常用的新特性,欢迎点赞!!! 新增操作符 1.?? $username = $_GET['user'] ?? ''; $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 2.<=> $number1 <=> $number2; 当 $number1 小于.等于.大于 $number2 时 分别返回 -1,0,1 新增函数 intdiv(被除数, 除数) — 对除法结果取整 intdiv(3, 2) //

PHP7 新特性概要

不向后兼容的变更 Error 错误报告机制,改为 Error 异常形式抛出. 它实现了 Throwable 接口 (所有异常都实现了这个基础接口). catch (Error $e) { ... } 或者 catch (Throwable $e) { ... } set_exception_handler() 不再保证收到的一定是 Exception 对象. 抛出 Error 对象时,如果 set_exception_handler() 里的异常处理代码声明了类型 Exception ,将会导致

php7新特性

1 php 7 性能 提升了 70%左右 2 固定变量类型,引入了错误处理 3 zval使用栈内存,php7可以直接使用栈内存. 4 zend_string存储hash值,array查询不再需要重复计算hash. php7 为字符串单独创建了新类型叫做zend_string,除了 char * 指针和长度之外,增加了一个hash字段,用于保存字符串的hash值,数组键值查找不需要反复计算hash值 5 hashtable 桶内之间存数据,减少了内存申请次数,提升了cache命中率和内存访问速度

php7新特性的理解和比较

1. null合并运算符(??) ??语法: 如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数. 1 //php7以前 if判断 2 if(empty($_GET['param'])) { 3 $param = 1; 4 }else{ 5 $param = $_GET['param']; 6 } 7 8 //php7以前 三元运算符 9 $param = empty($_GET['param']) ? 1 : $_GET['param']; 10 11 //PHP7 n

php7 新特性

PHP7使用新的zend engine3.0将应用程序性能提高近两倍,内存消耗比PHP5.6高出50%,它允许服务更多的并发用户,而不需要额外的硬件,PHP7是考虑到今天的工作负载而设计和重构的 新功能 1.增加标量类型声明,有两个选项 强制-强制是默认模式,不需要指定 严格-严格的模式已经明确暗示 强制模式:<?php function sum(int ...$ints){ return array_sum($ints); } print(sum(2,'3',4.1)); ?> 严格模式:&