After PHP 5.0 in 2004 and 5.6 in 2014 here comes a major version of PHP i.e. PHP 7.0 in December 2015. Recently in November 2016, there came PHP 7.1. Features of PHP 7.0 / 7.1 made everyone again focus their eyeballs on PHP. Not only fastest among all the versions of PHP but also one of the fastest and competitive among all the other programming languages and frameworks for web today.
Features of PHP 7 #1: Performance – As Fast As Twice Of PHP 5.6
The hard work of the developers of PHP 7 has made it so fast that it stands in comparison and somewhere even above the HHVM! With the same code and same hardware, the script can run approx. twice as fast as it would with PHP 5.6. Now, this is amazing! Just upgrading to PHP 7, you can get 25% to 70% performance gains on real-world applications ( Source: Zend ).
The concept of PHP7 is based on PHPNG project. PHPNG stands for PHP Next-Gen, whose ultimate aim was to increase the performance of PHP. Into the figures, where WordPress home page needed 9.4 billion CPU cycles, now with PHP 7 it needs only 2.6 billion cycles.!
The below-given statistics and images are with reference to the testing reports by ZEND. You can run up to three times Magento transactions on the same hardware.
Drupal 8 runs 72% faster with PHP 7
WordPress executes 100M CPU instructions for accomplishing one request with PHP 5.6 and with PHP 7, it executes only 25M CPU instructions!
PHP frameworks like Zend and Laravel shows extraordinary performances with PHP 7.
PHP has been faster than most of the language like Perl, Ruby, etc. With PHP 7, the difference is huge!
OpCache
PHP scripts are compiled at the run time i.e they are converted to computer readable language while they are processed every time. As it is compiled every time, it creates a good amount of delay in execution, hence making it slow.
With OpCache, the compilation takes place only once and the compiled code is stored in the cache. The script can be loaded from the cache at very higher rates. Thus, OpCache enables faster operations saving CPU cycles and ultimately the time.
PHP 7 vs HHVM
HHVM stands for HipHop Virtual Machine and is designed by Facebook to increase the execution speed of a website. Instead of compiling PHP to C++ HHVM compiles it to an intermediate level bytecode. This is then converted to machine readable language by JIT ( Just In Time ) compiler. This makes the execution of PHP much faster. The below graph compares the performance of PHP 7 and HHVM.
[ Source: wpoven.com ]
Features of PHP 7 #2: Scalar Type Declarations
PHP 5.6 used to set the variable types automatically (type inference), this is why we call it loosely typed language. Now, in PHP 7, you can set data type of a variable instead of leaving it on to PHP to infer the type. This gives huge performance boost as well as helps create robust applications.
Features of PHP 7 #3: Return Type Declarations
Similar like declaring the argument types, we can declare the function return type. This ensures that the function returns the type of value that is expected. This decreases the chances of getting errors and helps in exception handling in case an error occurs.
Declaring the return type in PHP 7 is an easy task. Put up a colon after the argument bracket ends while declaring the function. After the colon and before the opening of the curly braces mention the return type.
Example:
function getAvg(float $a, float $b) : float {
}
This ensures that the function returns only the float type values.
Features of PHP 7 #4: Anonymous Class Support
The general approach in the objected oriented programming is to declare the class and then access various methods using an object.
So, it will be something like:
class myClass
{
public function myFunction($myArgument)
{
echo $myArgument;
}
}
$myObject->setObject(new myClass()) ;
Here we need to first define the class and access it’s method by an object. This sometimes proves to be tedious when it is to be used only once. It gets more tedious especially while child classes which are to be used only once, extends the parent class.
With PHP 7, anonymous classes could be used. Anonymous classes in the sense that they do not have their names i.e. we do not need to define them before using.
For example:
$myObject->setObject( new class {
public function myFunction( $myArguments )
{
echo $myArguments;
}
)};
Features of PHP 7 #5: The null coalescing operator (??)
The null coalescing operation is the shorthand operator to perform isset() operation in the ternary operator. In PHP 5.6, the ternary operator had this syntax:
$a = isset( $a ) ? $a : ‘ ’;
Now in PHP 7, with the null coalescing operator, the syntax will be:
$a = $a ?? ‘ ’;
Features of PHP 7 #6: Combined comparison Operator (<=>)
The combined comparison is a shorthand operator for performing a three-way comparison. It returns:
- a positive integer (if the left-hand operand is greater than the right-hand operand)
- 0 (if both operands are equal)
- a negative integer (if the right-hand operand is greater than the left-hand operand)
Example:
var_dump( 1 ⇔ 2 ); // int(-1)
Features of PHP 7 #7: Many fatal errors will be considered as exception
Whenever there occurs a fatal error, the website crashes giving a weird image of ours on the visitor. Here, with PHP 7 it is possible to handle errors with an exception. Most of the fatal errors in PHP 5.6 will now throw exceptions and stack traces will be created. This will help for additional debugging of the error.
Features of PHP 7 #8: Filtered Unserialize()
Utmost care of security issues has been taken in the development of PHP 7. Until PHP 7 came into existence, the filtration to unserialize the classes was not possible. It provides security when serializing objects of untrusted data. It prevents the original code from injections and dirty data.
Example:
// converts all objects into __PHP_Incomplete_Class object
$data = unserialize($foo, ["allowed_classes" => false]);
// converts all objects into __PHP_Incomplete_Class object except those of Class1 and Class2
$data = unserialize($foo, ["allowed_classes" => ["Class1", "Class2"]);
// default behaviour (same as omitting the second argument) that accepts all classes
$data = unserialize($foo, ["allowed_classes" => true]);
Features of PHP 7 #9: session_start() Options
This feature enables to set session based php.ini options directly from session_start(). It allows passing an array that can modify the default session options.
session_start(['cache_limiter' => 'private']); // sets the session.cache_limiter option to private
All these makes up PHP 7 one of the finest languages to work upon. So get ready to access the websites at the lightning speed. It is predicted that the next versions of PHP 7 could be more fascinating and can include more features making it even faster! Get in touch with us to enhance the performance of your website by converting it to PHP 7.