This December PHP 7.0; a new version of PHP was released. It powers huge number of web applications. PHP 7 was in development for over two years and it followed the troubled development of PHP 6.
This suffered badly from Unicode problems and had various features to be implemented into earlier versions of PHP 6. PHP 6 never had a stable release. So, what’s new in PHP 7?
Improvements in PHP 7:
- Less memory usage which leads to 100% performance speed increase in most of the applications.
- It consistently has 64 bit support.
- All the outdated and unsupported SAPIs as well as PHP extensions must be removed.
- Anonymous classes.
- Update of Zend Engine to 3.0 version to interpret PHP code.
- Includes internal abstract Syntax tree for static analysis.
- Emoji Support.
- Scalar Type Declarations: These are available in two formats: Coercive and Strict. Parameters that can be enforced here are as follows: strings, integers, Booleans etc. Other types that were introduced in PHP 5 are class names, interfaces, array and callable.
- Return Type Declarations: PHP 7 supports return type declarations. These are similar to argument type declarations. These declarations specify the value type that will be returned from a function.
The same types are available for return type declarations as that of augment type declarations.
- Null coalescing Operator: This feature has been added as a syntactic sugar for the common case for the need to use ternary conjunction with isset(). The first operand returns if it exists and is not null or else the second operand is returned.
- Spaceship operators: Spaceship operators are used to compare two expressions. It returns -1, 0 or 1 when $a is respectively less than or equal to or greater than $b. Comparisons are performed as per PHP’s usual type comparison rules.
- Constant Arrays using define (): Array constants can be easily defined with define(). In PHP5.6, these were only defined using const.
- Anonymous Classes: Anonymous classes have support via new class. These can be used in place of full class definitions related to throw away objects.
- Unicode codepoint Escape Syntax: Unicode codepoint is useful in hexadecimal form and all the outputs that codepoint UTF-8 with a double quoted string or a heredoc is to be considered.
Every valid code point is accepted with leading 0’s being optional.
- Closure:: call(): It is a more performant, shorthand way to temporarily bind an object scope to a closure and then invoking it.
- Filtered unserialize (): This feature is used for rendering better security when objects are unserialized on untrusted data. Every possible code injection is prevented which enables the developer to whitelist the classes that can be unserialized.
- IntlChar: This new IntlChar class seeks to expose additional ICU functionality. This class itself shows several static methods and constants which can be used to manipulate Unicode characters. The intl extension must be installed to use this class.
- Expectations: These are backwards that are compatible with the older assert() function. These allow zero cost assertions in production code thus providing ability to throw custom exceptions when the assertion fails.
When the old API is maintained for compatibility at such times assert() is considered to be a language construct thus allowing first parameter to be an expression instead of just a string that is to be evaluated or a Boolean value that is to be tested.
- Group use declarations: Classes, functions, constants which are being imported from the same namespace can be easily grouped together in a single use statement.
- Generator Return Expressions: This feature develops a generator functionality which was introduced in PHP 5.5. This enables a return statement which can be used within a generator to enable final expression to be returned.
This value can be taken with the help of new generator:: get Return () method. This can be used only once the generator has finished yielding values.
- Generator Delegation: Generators can easily delegate to one another. Traversable object or array automatically without writing boiler plate in the outermost generator by using yield form construct.
- Integer Division with intdiv(): This new function performs an integer division of its operands and then returns it.
- Session options: This accepts an array of options which override all the devices that configure sessions. These options have been expanded to support session.lazy_write. This causes PHP to overwrite any session file in case session data has changed.
- Preg_replace_callback_array(): This new function enables code to be written in a clean way when using the Preg_replace_callback_array() function. Prior to PHP 7, all the call backs must be executed as per regular expression that is needed to call back the function.
- CSPRNG Functions: Two new functions are added to generate secure integers and strings in a cross platform way.
- List() used to unpack objects implementing ArrayAccess: This function was not believed to operate correctly with objects that implement arrayaccess. It is to be fixed.
One can easily get migrated from PHP5.5 to PHP 7. A manual for this migration process is also available on the PHP site. Zend and Symphony will offer PHP7 support for their respective frameworks.
So, now it will be easier to use PHP as it has improved to an extent. If there are any further updates, we will make sure to share them with our readers. This is it for now. For more such details about PHP; stay connected with PHP Development Company, Softqube Technologies.