PHP 7 . ca

What will be in PHP 7 / PHPNG

Get a head start with PHP 7

PHP 7.0.0 RC 2 Released

  • Improved performance: PHP 7 is up to twice as fast as PHP 5.6
  • Consistent 64-bit support
  • Many fatal errors are now Exceptions
  • Removal of old and unsupported SAPIs and extensions
  • The null coalescing operator (??)
  • Combined comparison Operator (<=>)
  • Return Type Declarations
  • Scalar Type Declarations
  • Anonymous Classes

Download PHP 7.0.0 RC 2

I'm happy the wait is over and the votes are in. PHP 7 was choosen in the Name of Next Release RFC proposal.

Many valid reasons existed for supporting either name going forward. I believe the correct choice was made mostly because of the abandoning of the PHP 6 branch path in 2010 would cause confusion. Plus PHP 7 is a huge leap forward and skipping a major branch number would highlight that.

The debate boiled down to two points of view:

  • No good reasons NOT to skip version 6
  • Strong reasons of why we actually should skip version 6 into 7

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 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 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 Extentions

  • 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

Not yet supported

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

The excitement over PHP 6 many years ago

Things have changed so much since PHP 6 was first introduced and abandoned. Below is a post I made when PHP 6 first entered the scene. The exitement of a major branch change in PHP was captured, we all were wondering what PHP would transform itself's into. I'm starting to get the same feeling.

What features are you looking for when they start developing PHP 7? PHP 6 is well under way.
We know that safe mode, register globals and magic quotes will be removed.
Ereg() will be removed. fileinfo() will undergo a rewrite.
An alternative PHP cache will grace the language.

Namespaces will begin appearing in the language and complete UNICODE support.

PHP 6 so far appears to be a large cleanup effort which is welcomed.

A new PHP_INI_SYSTEM variable will be include to allow a url (allow_url_include).

PHP usage is on the rise and will continue to rise.

PHP has come a long way since PHP 6.
I can't wait to see what changes PHP 7 will bring to the web. The journey has started.

Things could all change tomorrow so follow the conversations in the PHP internal discussions.

The link below will show you how to download and build the latest branch. Next Generation PHP - PHPNG