PHP 7 provides significant performance improvements over PHP 5 through a new Zend engine called PHPNG. Some key features of PHP 7 include twice the speed, support for error exceptions, 64-bit system support, new null coalescing and spaceship operators, return type declarations, anonymous classes, improved namespace imports, and removal of deprecated functions and SAPIs.
2. The name of
“php7”Why php7 not php6 ?
The current stable release uses the version
number PHP 5.6. After some dispute the
development team decided they would omit the
PHP 6 name for the next major release. PHP 6
already existed in the past as an experimental
project but never reached the production phase.
To prevent users from mixing up the former
attempt with the latest development, the new
major release will run under the name of PHP 7.
3. PHP#NGThe Zend engine has been powering PHP
since 1999 when it was introduced with
the new PHP 4 release. Zend – not to
confused with the Zend Framework – is an
open-source execution engine written in C
that interprets the PHP language. The
current PHP 5.X series use Zend Engine II
that enhanced the functionality of the
initial engine and adds an extensible
object model and a significant
performance enhancement to the language.
PHP 7 receives a brand new version of the
engine coming under the code name of
PHP#NG (Next Generation)
4. Twice The SpeedThe most easily recognizable advantage of
the new PHPNG engine is the significant
performance improvement. The development
team of PHPNG refactored the Zend Engine,
and remarkably optimized memory usage.
The results? You can see the performance
benchmarks provided by the Zend
Performance Team below. By using PHP 7
not only your code will be executed
faster but you will also need fewer
servers to serve the same amount of
users.
7. Facilitates Error
Handling
To say the least, handling fatal and catchable
fatal errors have never been an easy task for
PHP coders. The new Engine Exceptions will allow
you to replace these kind of errors with
exceptions. If the exception is not caught, PHP
will continue to return the same fatal errors as
it does in the current 5.X series.
The new EngineException objects don’t extend
the Exception Base Class. This ensures backward
compatibility and results in two different kinds
of exceptions in error handling: traditional and
engine exceptions.
To enable programmers to catch both, PHP 7
introduces a new shared Parent Class under the
name of BaseException.
9. Supports x64
systems
PHP is a prominent member of the LAMP stack
which means its native environment is Linux
– but it’s also possible to run it on a
Windows system. The 5.X series don’t yet
provide 64-bit integer or large file
support, so until now x64 builds have been
considered experimental.
PHP 7 will change this as it introduces
consistent 64-bit support which means both
native 64-bit integers and large files will
be supported, allowing you to confidently
run the language on your 64-bit Windows
system in the future.
10. New Spaceship and
Null Coalescing
Operators
The Spaceship operator runs under the
official name of Combined Comparison
Operator. The notation of the new operator
looks like this: <=> (kind of like a
simplified spaceship, if you imagine it
right).
The spaceship operator returns 0 if both
operands are equal, 1 if the left is
greater, and -1 if the right is greater.
It’s also called a three-way comparison
operator, and it already exists in other
popular programming languages like Perl and
Ruby.
12. The Null
operator(??)
The Null Coalescing operator is denoted
with two question marks ( ?? ). You can
use it when you want to check if
something exists and return a default
value, in case it doesn’t. The coalesce
operator returns the result of its first
operand if it exists and is not null, and
the second operand in any other cases.
Here’s how the new operator reduces the
time spent with basic declarations:
14. Accurate return type
Have you ever wanted to prevent
unintended return values by declaring
the return type of a function? Well,
the new PHP 7 enables developers to
enhance the quality of their code
with the help of return type
declarations.
The image below depicts a very simple
use case where the foo() function is
supposed to return an array.
16. Accurate return type
To enhance the feature even more, PHP
7 introduces 4 new type declarations
for scalar types: int, float, string
and bool. The new scalar types allow
developers to denote that they are
expecting integers, floats, strings,
or booleans to be returned. The new
scalar types introduced by PHP 7 will
also be supported by argument Type
Hints that enables developers to
force the type of parameters since
the PHP 5.X series.
17. Anonymous Classes
PHP 7 enables you to use anonymous classes,
already a well-established practice in
other object-oriented languages like C# and
Java. An anonymous class is a class without
a name. The object it instantiates has the
same functionality as an object of a named
class.
The syntax is the same as what we are used
to in traditional PHP classes, only the
name is missing. If anonymous classes are
used well, they can speed up coding as well
execution time. Anonymous classes are
excellent when a class is used only once
during execution and in cases when a class
doesn’t need to be documented.
19. Facilitates Imports
From the Same
Namespace
The new Group Use Declarations
feature will be godsent to those of
who want to import many classes from
the same namespace. The new syntax
cuts verbosity, makes your code
tidier and easier on the eyes, and
saves you a lot of typing time.
It will also be easier to read
through and debug codes, as group use
declarations help you identify the
imports that belong to the same
module.
21. Facilitates Imports
From the Same
Namespace
The goal of PHP 7 was to free up the
space to enable improvement, so it was
necessary to get rid of many deprecated
functionalities, old and unsupported
Server APIs and extensions.
All the removed items have been
deprecated for a while in PHP 5 so most
likely you haven’t used them for a long
time. However please note if you have a
legacy app running on older PHP versions
the new PHP 7 can potentially break the
code.
22. Deprecated Functions
• dl on fpm-fcgi (since PHP 5.3) REMOVED
• set_magic_quotes_runtime and magic_quotes_runtime
(since PHP 5.4) REMOVED
• set_socket_blocking (since PHP 5.4; use
stream_set_blocking instead) REMOVED
• mcrypt_generic_end (since PHP 5.4; use
mcrypt_generic_deinit instead) REMOVED
• mcrypt_ecb, mcrypt_cbc, mcrypt_cfb and mcrypt_ofb
(since PHP 5.5, but documented as deprecated
earlier; use mcrypt_encrypt and mcrypt_decrypt
instead) REMOVED
• datefmt_set_timezone_id and
IntlDateFormatter::setTimeZoneID (since PHP 5.5; use
datefmt_set_timezone or
IntlDateFormatter::setTimeZone instead) REMOVED