2

PHP7 coming with improved performance

PHP is one of the most popular programming languages for most of the web development companies today. 2015 has given a significant boost to PHP after eleven years of its release i.e. 5.0. At the end of 2015, PHP 7 was released which has brought many new features and impressive performance boosters.

php-7-features

But how will this result on your current PHP codebase? What is revised in it? And is it safe to update?
This post will solve your queries and give you a complete guide to PHP 7.

An Introduction

PHP 7 is a brand new version of the engine coming under the code name of PHP#NG (Next Generation).

The Zend engine has been supplying PHP since 1999. It is important to note that Zend should not to confused with the Zend Framework, an open-source execution engine which is in C language that interprets the PHP language. The older version i.e. PHP 5.X series utilized Zend Engine II. It assisted in enhancing the functionality of the primary engine and added an extensible object model with significant performance enhancement to the language.

The Name’s PHP 7 (Not 5.7)

PHP 5.7 existed in the past as an experimental project but never reached the production phase. It was due to the Unicode problems that were supposed to be solved in version 5.7 which were unsuccessful, hence because of too many complications, and this kind of ruined things for everyone, it was decided to come up with PHP 7.

New Features of PHP 7

Due to a new version of Zend Engine, PHP 7.0.0 offers the following features:

  • Constant arrays using define()
  • Spaceship Operator
  • Return Type Declarations
  • Scalar Type Declarations
  • PHP 7 enable to use Anonymous Classes
  • The null coalescing Operator (??)
  • Closure::call()
  • Filtered unserialize()
  • IntlChar
  • Anonymous Classes.
  • Expectations
  • Generator Return Expressions
  • Generator Delegation
  • Unicode codepoint escape syntax
  • CSPRNG Functions
  • preg_replace_callback_array()
  • Session options
  • Integer division with intdiv()
  • Group use Declarations

Some handpicked features of PHP 7 are explained here.

Scalar Type Deceleration

It is one of the most controversial change. The addition of this feature involved vote that almost passed. Multiple RFCs followed this, and a whole lot of confusion occurred which ultimately ended with moving the original RFC.
For the end-users, it only means that you can type-hint with scalar types. Specifically: integers, floating point numbers, string, and booleans. Default type-hints are non-strict, which denotes that they pressurize the original type to the type-hint type float (1.0).

Return type declarations

The new PHP 7 adds support for return type declarations. It is just like argument type declarations using the same types which are available for return type declarations. The return type declarations specify the type of the value that will be returned from a function.

It will result into:

Null coalescing operator

The null coalescing operator (??) act as a syntactic sugar for using a ternary in conjunction with isset(). If it exists it return its first operand and is not NULL; otherwise it returns its second operand.

Spaceship operator

The spaceship operator is used for comparing two expressions which is done according to PHP’s usual type comparison rules. It returns -1, 0 or 1 when $a is respectively less than, equal to, or greater than $b.

Constant arrays using

In PHP 5.6, Array were defined with const. But now with the PHP 7 Array constants are defined with define().

PHP 7 enable to use Anonymous Classes

PHP 7 allow using Anonymous Classes which means a class without a name. The object it instantiates has the same functionality as an object of a named class. If they are used well, they may speed up coding as well execution time.

The example will result into:

Filtered unserialize()

It is useful to provide provide better security while unserializing objects on untrusted data. It prevents possible code injections by enabling the developer to whitelist classes that can be unserialized.

IntlChar

The new IntlChar class seeks to provide additional ICU functionality. The class itself defines a number of static methods and constants that can be used to manipulate unicode characters.

Expectations

Expectations are a backwards compatible enhancement to the older assert() function. They allow for zero-cost assertions in production code, and provide the ability to throw custom exceptions when the assertion fails.

The above example will output:

Fatal error: Uncaught CustomError: Some error message

Generator Return Expressions

This feature was introduced into PHP 5.5. It builds upon the generator functionality. This value can be fetched using the newGenerator::getReturn(), method, which may only be used once the generator has finishing yielding values.

The above example will output:

Unicode codepoint escape syntax

Here Unicode takes the codepoint into hexadecimal form and interprets the same codepoint into doubled quoted string or heredoc- UTF-8.

Wrapping up

PHP is upgraded to improve its performance. The improved version has introduced as phpng. The increased performance may ensure quick adoption, especially from smaller hosts, as they will be able to host maximum users on the same hardware. In addition to performance, PHP 7 is also expected to save a substantial amount of memory, as optimization of internal data structures is one of the fundamental ways in which performance enhancement have been achieved. Let’s go PHP!

Save

Prakash S

Prakash S

I would like to introduce myself as a Software professional opting for the career in software industry. I'm Prakash S, a MCA graduate and trained as industry level practice for Software technology. Basically I am a PHP Developer but now days exploring more in HTML5, CSS, AngularJS and jQuery libraries.


  • Jim

    You made some good points there. I looked on the web for more information about the issue and found most individuals will go along with
    your views on this site.