SlideShare a Scribd company logo
PHP-7.X
Vu Thanh Tai - 15/06/2018
https://toidicode.com
OVERVIEW
•Performances
•Changes & Enhancements
•New Features
•Deprecations
• PHP 7.0.X
• PHP 7.1.X
• PHP 7.2.X
PHP 7.X
PERFORMANCES
Performances
● Machine used: 8x Intel(R) Xeon(R) CPU @ 2.20GHz (Powered by Google Cloud Platform
and running in an isolated container)
● OS: Ubuntu 16.04.3 LTS
● Docker Stack: Debian 8, Nginx 1.13.8, MariaDB 10.1.31
● PHP Engines: 5.6, 7.0, 7.1, 7.2
● HHVM: 3.24.2
● OPCache: For WordPress, Joomla, and Drupal, we used the official Docker image. For the
rest we used the same image setup with the OPcache enabled using the following
recommended php.ini settings.
Performances
● WordPress 4.9.4 PHP 5.6 benchmark
results: 49.18 req/sec
● WordPress 4.9.4 PHP 7.0 benchmark
results: 133.55 req/sec
● WordPress 4.9.4 PHP 7.1 benchmark
results: 134.24 req/sec
● WordPress 4.9.4 PHP 7.2 benchmark
results: 148.80 req/sec
● WordPress 4.9.4 HHVM benchmark
results: 144.76 req/sec
Performances
● WordPress 4.9.4 + WooCommerce 3.3.1
PHP 5.6 benchmark results: 34.47 req/sec
● WordPress 4.9.4 + WooCommerce 3.3.1
PHP 7.0 benchmark results: 84.89 req/sec
● WordPress 4.9.4 + WooCommerce 3.3.1
PHP 7.1 benchmark results: 86.04 req/sec
● WordPress 4.9.4 + WooCommerce 3.3.1
PHP 7.2 benchmark results: 92.60 req/sec
● WordPress 4.9.4 + WooCommerce 3.3.1
HHVM benchmark results: 69.58 req/sec
Performances
● Drupal 8.4.4 PHP 5.6 benchmark
results: 7.05 req/sec
● Drupal 8.4.4 PHP 7.0 benchmark
results: 15.94 req/sec
● Drupal 8.4.4 PHP 7.1 benchmark
results: 19.15 req/sec
● Drupal 8.4.4 PHP 7.2 benchmark
results: (not supported)
● Drupal 8.4.4 HHVM benchmark results:
19.57 req/sec
Performances
● Joomla! 3.8.5 PHP 5.6 benchmark results:
26.42 req/sec
● Joomla! 3.8.5 PHP 7.0 benchmark results:
41.46 req/sec
● Joomla! 3.8.5 PHP 7.1 benchmark results:
41.17 req/sec
● Joomla! 3.8.5 PHP 7.2 benchmark results:
42.36 req/sec
● Joomla! 3.8.5 HHVM benchmark results:
51.84 req/sec
Performances
● Magento 2 (CE) 2.1.11 PHP 5.6 benchmark
results: 10.75 req/sec
● Magento 2 (CE) 2.1.11 PHP 7.0 benchmark
results: 20.87 req/sec
● Magento 2 (CE) 2.1.11 PHP 7.1 benchmark
results: 29.84 req/sec
● Magento 2 (CE) 2.1.11 PHP 7.2 benchmark
results: not supported
● Magento 2 (CE) 2.1.11 HHVM benchmark
results: not supported
Performances
● Laravel 5.4.36 PHP 5.6 benchmark results:
66.57 req/sec
● Laravel 5.4.36 PHP 7.0 benchmark results:
114.55 req/sec
● Laravel 5.4.36 PHP 7.1 benchmark results:
113.26 req/sec
● Laravel 5.4.36 PHP 7.2 benchmark results:
114.04 req/sec
● Laravel 5.4.36 HHVM benchmark results:
394.31 req/sec
Performances
● Laravel 5.6 PHP 5.6 benchmark results:
not supported
● Laravel 5.6 PHP 7.0 benchmark results:
not supported
● Laravel 5.6 PHP 7.1 benchmark results:
411.39 req/sec
● Laravel 5.6 PHP 7.2 benchmark results:
442.17 req/sec
● Laravel 5.6 HHVM benchmark results: not
supported
Performances
● Symfony 3.3.6 PHP 5.6 benchmark results:
81.78 req/sec
● Symfony 3.3.6 PHP 7.0 benchmark results:
184.15 req/sec
● Symfony 3.3.6 PHP 7.1 benchmark results:
187.60 req/sec
● Symfony 3.3.6 PHP 7.2 benchmark results:
196.94 req/sec
● Symfony 3.3.6 HHVM benchmark results:
not supported
Performances
● Symfony 4.0.1 PHP 5.6 benchmark results:
not supported
● Symfony 4.0.1 PHP 7.0 benchmark results:
not supported
● Symfony 4.0.1 PHP 7.1 benchmark results:
188.12 req/sec
● Symfony 4.0.1 PHP 7.2 benchmark results:
197.17 req/sec
● Symfony 4.0.1 HHVM benchmark results:
not supported
CHANGES & ENHANCEMENTS
Changes & Enhancements
PHP
● PHP 5:
Parser Opcodes Execution
PHP
● PHP 7:
Parser Opcodes
Execution
AST
PHP 7.0.X
NEW FEATURES
New Features - PHP 7.0.X
• PHP 7.0.X released 03/12/2015.
• PHP 7.0.X comes with a new version of the Zend Engine.
New Features - PHP 7.0.X
New Features - PHP 7.0.X -
Scalar type declarations:
PHP 5.X PHP 7.0.X
New Features - PHP 7.0.X -
Scalar type declarations:
Type
Declaration
int float string bool object
int yes yes* yes^ yes no
float yes yes yes^ yes no
string yes^ yes yes yes yes~
bool yes yes yes yes no
* Only non-NaN floats between PHP_INT_MIN and PHP_INT_MAX accepted.
^ If it’s a numeric string
~ Only if object has a toString() method
New Features - PHP 7.0.X -
Scalar type declarations:
● By default, PHP will coerce values of the wrong type into the expected scalar type if possible. For
example, a function that is given an integer for a parameter that expects a string will get a variable of
type string.
Config strict types:
New Features - PHP 7.0.X -
Scalar type declarations:
Example with strict mode:
New Features - PHP 7.0.X -
Return type declarations:
● PHP 7 adds support for return type declarations. Similarly to argument type declarations, return type
declarations specify the type of the value that will be returned from a function. The same types are
available for return type declarations as are available for argument type declarations.
New Features - PHP 7.0.X -
Null coalescing operator:
● The null coalescing operator (??) has been added as syntactic sugar for the common case of needing to
use a ternary in conjunction with isset(). It returns its first operand if it exists and is not NULL; otherwise it
returns its second operand.
New Features - PHP 7.0.X -
Spaceship operator:
● The spaceship operator is used for comparing two expressions. It returns -1, 0 or 1 when $a is
respectively less than, equal to, or greater than $b. Comparisons are performed according to PHP's
usual type comparison rules.
New Features - PHP 7.0.X -
Constant arrays using define():
● Array constants can now be defined with define(). In PHP 5.6, they could only be defined with const.
New Features - PHP 7.0.X -
Anonymous classes:
● Support for anonymous classes has been
added via new class. These can be used in
place of full class definitions for throwaway
objects:
New Features - PHP 7.0.X -
Closure::call():
● Closure::call() is a more performant, shorthand way of temporarily binding an object scope to a closure
and invoking it.
New Features - PHP 7.0.X -
Filtered unserialize():
● This feature seeks to provide better security when unserializing objects on untrusted data. It prevents
possible code injections by enabling the developer to whitelist classes that can be unserialized.
New Features - PHP 7.0.X -
Group use declarations:
● Classes, functions and constants being imported from the same namespace can now be grouped
together in a single use statement.
New Features - PHP 7.0.X -
Other Features:
● Generator Return Expressions
● Integer division with intdiv()
● preg_replace_callback_array()
● IntlChar
● Unicode codepoint escape syntax
PHP 7.0.X
DEPRECATIONS & REMOVALS
Deprecated - PHP 7.0.X -
PHP 4 style constructors:
● PHP 4 style constructors (methods that have the same name as the class they are defined in) are
deprecated, and will be removed in the future. PHP 7 will emit E_DEPRECATED if a PHP4 constructor
is the only constructor defined within a class. Classes that implement a __construct() method are
unaffected.
Deprecated - PHP 7.0.X -
Static calls to non-static methods:
● Static calls to methods that are not declared static are deprecated, and may be removed in the future.
Deprecated - PHP 7.0.X -
password_hash() salt option:
● The salt option for the password_hash() function has been deprecated to prevent developers from
generating their own (usually insecure) salts. The function itself generates a cryptographically secure
salt when no salt is provided by the developer - therefore custom salt generation should not be needed.
Deprecated - PHP 7.0.X -
Other Deprecated:
● capture_session_meta SSL context option.
● ldap_soft() function in library LDAP.
PHP 7.1.X
NEW FEATURES
New Features - PHP 7.1.X
PHP 7.1.X released 01/12/2016.
New Features - PHP 7.1.X
Nullable types:
● Type declarations for parameters and return values can now be marked as nullable by prefixing the
type name with a question mark. This signifies that as well as the specified type, NULL can be passed
as an argument, or returned as a value, respectively.
New Features - PHP 7.1.X -
Void functions:
● Type declarations for parameters and return values can now be marked as nullable by prefixing the
type name with a question mark. This signifies that as well as the specified type, NULL can be passed
as an argument, or returned as a value, respectively.
New Features - PHP 7.1.X -
Class constant visibility:
● Support for specifying the visibility of class constants has been added.
New Features - PHP 7.1.X -
Multi catch exception handling:
● Multiple exceptions per catch block may now be specified using the pipe character (|). This is useful for
when different exceptions from different class hierarchies are handled the same.
New Features - PHP 7.1.X -
Support for keys in list():
● You can now specify keys in list(), or its new shorthand [] syntax. This enables destructuring of arrays
with non-integer or non-sequential keys.
New Features - PHP 7.1.X -
Support for negative string offsets:
● Support for negative string offsets has been added to the string manipulation functions accepting
offsets, as well as to string indexing with [] or {}. In such cases, a negative offset is interpreted as being
an offset from the end of the string.
Deprecated - PHP 7.1.X -
Other Deprecated:
● iterable pseudo-type.
● Support for AEAD in ext/openssl.
● Convert callables to Closures with Closure::fromCallable()
PHP 7.1.X
DEPRECATIONS & REMOVALS
Deprecated - PHP 7.1.X -
● Eval option for mb_ereg_replace() and mb_eregi_replace()
● ext/mcrypt
PHP 7.2.X
NEW FEATURES
New Features - PHP 7.2.X
PHP 7.2.X released 30/11/2017.
New Features - PHP 7.2.X -
New object type:
● A new type, object, has been introduced that can be used for (contravariant) parameter typing and
(covariant) return typing of any objects.
New Features - PHP 7.2.X -
Abstract method overriding:
● Abstract methods can now be overridden when an abstract class extends another abstract class.
New Features - PHP 7.2.X -
Parameter type widening:
● Parameter types from overridden methods and from interface implementations may now be omitted.
This is still in compliance with LSP, since parameters types are contravariant.
New Features - PHP 7.2.X -
Password hashing with Argon2:
● Argon2 has been added to the password hashing API, where the following constants have been
exposed:
○ PASSWORD_ARGON2I
○ PASSWORD_ARGON2_DEFAULT_MEMORY_COST
○ PASSWORD_ARGON2_DEFAULT_TIME_COST
○ PASSWORD_ARGON2_DEFAULT_THREADS
New Features - PHP 7.2.X -
Other New Features:
● SQLite3 allows writing BLOBs.
● Oracle OCI8 Transparent Application Failover Callbacks.
● Enhancements to the ZIP extension.
● proc_nice() support on Windows.
PHP 7.2.X
DEPRECATIONS & REMOVALS
Deprecates - PHP 7.2.X -
__autoload() method:
● The __autoload() method has been deprecated because it is inferior to spl_autoload_register() (due to it
not being able to chain autoloaders), and there is no interoperability between the two autoloading
styles.
Deprecates - PHP 7.2.X -
● create_function().
● parse_str() without a second argument.
● gmp_random() function.
● each() function.
● assert() with a string argument.
● ...
Deprecates - PHP 7.2.X -
__autoload() method:
● The __autoload() method has been deprecated because it is inferior to spl_autoload_register() (due to it
not being able to chain autoloaders), and there is no interoperability between the two autoloading
styles.
References
http://php.net/
www.phproundtable.com
https://kinsta.com/blog/php-7-hhvm-benchmarks/
PHP 7X New Features
PHP 7X New Features

More Related Content

PPTX
Php 5.6 vs Php 7 performance comparison
PDF
The why and how of moving to php 8
PDF
The why and how of moving to php 7
PPTX
Java 9 features
PDF
Php 5.6 From the Inside Out
PDF
Complete Java Course
PDF
Exploring lambdas and invokedynamic for embedded systems
PDF
Handling inline assembly in Clang and LLVM
Php 5.6 vs Php 7 performance comparison
The why and how of moving to php 8
The why and how of moving to php 7
Java 9 features
Php 5.6 From the Inside Out
Complete Java Course
Exploring lambdas and invokedynamic for embedded systems
Handling inline assembly in Clang and LLVM

What's hot (20)

PDF
Hyperledger 구조 분석
PDF
Effective Go
PDF
Metamodeling of custom Pharo images
PDF
In Vogue Dynamic
ODP
From Java 6 to Java 7 reference
PDF
Zend Framework 2 Components
PPT
C tutorial
PDF
Last 2 Months in PHP - July & August 2016
PDF
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
PDF
Boosting Developer Productivity with Clang
PDF
Lock free programming - pro tips devoxx uk
PDF
Better Code: Concurrency
PPT
Template Method Design Pattern
PPTX
JShell: An Interactive Shell for the Java Platform
PDF
Processor Verification Using Open Source Tools and the GCC Regression Test Suite
PPTX
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
PDF
Cap'n Proto (C++ Developer Meetup Iasi)
ODP
Runtime Symbol Resolution
PDF
Intrinsic Methods in HotSpot VM
Hyperledger 구조 분석
Effective Go
Metamodeling of custom Pharo images
In Vogue Dynamic
From Java 6 to Java 7 reference
Zend Framework 2 Components
C tutorial
Last 2 Months in PHP - July & August 2016
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Boosting Developer Productivity with Clang
Lock free programming - pro tips devoxx uk
Better Code: Concurrency
Template Method Design Pattern
JShell: An Interactive Shell for the Java Platform
Processor Verification Using Open Source Tools and the GCC Regression Test Suite
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
Cap'n Proto (C++ Developer Meetup Iasi)
Runtime Symbol Resolution
Intrinsic Methods in HotSpot VM
Ad

Similar to PHP 7X New Features (20)

PPTX
Php 7 - YNS
ODP
The why and how of moving to php 7.x
ODP
The why and how of moving to php 7.x
PDF
Start using PHP 7
PPT
Php5 vs php7
PPTX
Learning php 7
PPTX
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
PDF
What's new in PHP 7.1
PPTX
PPTX
PHP7 Presentation
PDF
PHP7: Hello World!
PPTX
Peek at PHP 7
PDF
PHP7 is coming
PDF
BSA Academy 2016. PHP 7. What's new?
PPTX
New in php 7
PDF
The new features of PHP 7
PDF
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
PPTX
PHP 7 Crash Course
PDF
Php 7 crash course
ODP
Is your code ready for PHP 7 ?
Php 7 - YNS
The why and how of moving to php 7.x
The why and how of moving to php 7.x
Start using PHP 7
Php5 vs php7
Learning php 7
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
What's new in PHP 7.1
PHP7 Presentation
PHP7: Hello World!
Peek at PHP 7
PHP7 is coming
BSA Academy 2016. PHP 7. What's new?
New in php 7
The new features of PHP 7
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
PHP 7 Crash Course
Php 7 crash course
Is your code ready for PHP 7 ?
Ad

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Spectroscopy.pptx food analysis technology
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Cloud computing and distributed systems.
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Review of recent advances in non-invasive hemoglobin estimation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectroscopy.pptx food analysis technology
Empathic Computing: Creating Shared Understanding
Understanding_Digital_Forensics_Presentation.pptx
Machine learning based COVID-19 study performance prediction
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Cloud computing and distributed systems.
Building Integrated photovoltaic BIPV_UPV.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Reach Out and Touch Someone: Haptics and Empathic Computing
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Unlocking AI with Model Context Protocol (MCP)
The Rise and Fall of 3GPP – Time for a Sabbatical?
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Review of recent advances in non-invasive hemoglobin estimation

PHP 7X New Features

  • 1. PHP-7.X Vu Thanh Tai - 15/06/2018 https://toidicode.com
  • 3. • PHP 7.0.X • PHP 7.1.X • PHP 7.2.X
  • 5. Performances ● Machine used: 8x Intel(R) Xeon(R) CPU @ 2.20GHz (Powered by Google Cloud Platform and running in an isolated container) ● OS: Ubuntu 16.04.3 LTS ● Docker Stack: Debian 8, Nginx 1.13.8, MariaDB 10.1.31 ● PHP Engines: 5.6, 7.0, 7.1, 7.2 ● HHVM: 3.24.2 ● OPCache: For WordPress, Joomla, and Drupal, we used the official Docker image. For the rest we used the same image setup with the OPcache enabled using the following recommended php.ini settings.
  • 6. Performances ● WordPress 4.9.4 PHP 5.6 benchmark results: 49.18 req/sec ● WordPress 4.9.4 PHP 7.0 benchmark results: 133.55 req/sec ● WordPress 4.9.4 PHP 7.1 benchmark results: 134.24 req/sec ● WordPress 4.9.4 PHP 7.2 benchmark results: 148.80 req/sec ● WordPress 4.9.4 HHVM benchmark results: 144.76 req/sec
  • 7. Performances ● WordPress 4.9.4 + WooCommerce 3.3.1 PHP 5.6 benchmark results: 34.47 req/sec ● WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.0 benchmark results: 84.89 req/sec ● WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.1 benchmark results: 86.04 req/sec ● WordPress 4.9.4 + WooCommerce 3.3.1 PHP 7.2 benchmark results: 92.60 req/sec ● WordPress 4.9.4 + WooCommerce 3.3.1 HHVM benchmark results: 69.58 req/sec
  • 8. Performances ● Drupal 8.4.4 PHP 5.6 benchmark results: 7.05 req/sec ● Drupal 8.4.4 PHP 7.0 benchmark results: 15.94 req/sec ● Drupal 8.4.4 PHP 7.1 benchmark results: 19.15 req/sec ● Drupal 8.4.4 PHP 7.2 benchmark results: (not supported) ● Drupal 8.4.4 HHVM benchmark results: 19.57 req/sec
  • 9. Performances ● Joomla! 3.8.5 PHP 5.6 benchmark results: 26.42 req/sec ● Joomla! 3.8.5 PHP 7.0 benchmark results: 41.46 req/sec ● Joomla! 3.8.5 PHP 7.1 benchmark results: 41.17 req/sec ● Joomla! 3.8.5 PHP 7.2 benchmark results: 42.36 req/sec ● Joomla! 3.8.5 HHVM benchmark results: 51.84 req/sec
  • 10. Performances ● Magento 2 (CE) 2.1.11 PHP 5.6 benchmark results: 10.75 req/sec ● Magento 2 (CE) 2.1.11 PHP 7.0 benchmark results: 20.87 req/sec ● Magento 2 (CE) 2.1.11 PHP 7.1 benchmark results: 29.84 req/sec ● Magento 2 (CE) 2.1.11 PHP 7.2 benchmark results: not supported ● Magento 2 (CE) 2.1.11 HHVM benchmark results: not supported
  • 11. Performances ● Laravel 5.4.36 PHP 5.6 benchmark results: 66.57 req/sec ● Laravel 5.4.36 PHP 7.0 benchmark results: 114.55 req/sec ● Laravel 5.4.36 PHP 7.1 benchmark results: 113.26 req/sec ● Laravel 5.4.36 PHP 7.2 benchmark results: 114.04 req/sec ● Laravel 5.4.36 HHVM benchmark results: 394.31 req/sec
  • 12. Performances ● Laravel 5.6 PHP 5.6 benchmark results: not supported ● Laravel 5.6 PHP 7.0 benchmark results: not supported ● Laravel 5.6 PHP 7.1 benchmark results: 411.39 req/sec ● Laravel 5.6 PHP 7.2 benchmark results: 442.17 req/sec ● Laravel 5.6 HHVM benchmark results: not supported
  • 13. Performances ● Symfony 3.3.6 PHP 5.6 benchmark results: 81.78 req/sec ● Symfony 3.3.6 PHP 7.0 benchmark results: 184.15 req/sec ● Symfony 3.3.6 PHP 7.1 benchmark results: 187.60 req/sec ● Symfony 3.3.6 PHP 7.2 benchmark results: 196.94 req/sec ● Symfony 3.3.6 HHVM benchmark results: not supported
  • 14. Performances ● Symfony 4.0.1 PHP 5.6 benchmark results: not supported ● Symfony 4.0.1 PHP 7.0 benchmark results: not supported ● Symfony 4.0.1 PHP 7.1 benchmark results: 188.12 req/sec ● Symfony 4.0.1 PHP 7.2 benchmark results: 197.17 req/sec ● Symfony 4.0.1 HHVM benchmark results: not supported
  • 16. Changes & Enhancements PHP ● PHP 5: Parser Opcodes Execution PHP ● PHP 7: Parser Opcodes Execution AST
  • 18. New Features - PHP 7.0.X • PHP 7.0.X released 03/12/2015. • PHP 7.0.X comes with a new version of the Zend Engine.
  • 19. New Features - PHP 7.0.X
  • 20. New Features - PHP 7.0.X - Scalar type declarations: PHP 5.X PHP 7.0.X
  • 21. New Features - PHP 7.0.X - Scalar type declarations: Type Declaration int float string bool object int yes yes* yes^ yes no float yes yes yes^ yes no string yes^ yes yes yes yes~ bool yes yes yes yes no * Only non-NaN floats between PHP_INT_MIN and PHP_INT_MAX accepted. ^ If it’s a numeric string ~ Only if object has a toString() method
  • 22. New Features - PHP 7.0.X - Scalar type declarations: ● By default, PHP will coerce values of the wrong type into the expected scalar type if possible. For example, a function that is given an integer for a parameter that expects a string will get a variable of type string. Config strict types:
  • 23. New Features - PHP 7.0.X - Scalar type declarations: Example with strict mode:
  • 24. New Features - PHP 7.0.X - Return type declarations: ● PHP 7 adds support for return type declarations. Similarly to argument type declarations, return type declarations specify the type of the value that will be returned from a function. The same types are available for return type declarations as are available for argument type declarations.
  • 25. New Features - PHP 7.0.X - Null coalescing operator: ● The null coalescing operator (??) has been added as syntactic sugar for the common case of needing to use a ternary in conjunction with isset(). It returns its first operand if it exists and is not NULL; otherwise it returns its second operand.
  • 26. New Features - PHP 7.0.X - Spaceship operator: ● The spaceship operator is used for comparing two expressions. It returns -1, 0 or 1 when $a is respectively less than, equal to, or greater than $b. Comparisons are performed according to PHP's usual type comparison rules.
  • 27. New Features - PHP 7.0.X - Constant arrays using define(): ● Array constants can now be defined with define(). In PHP 5.6, they could only be defined with const.
  • 28. New Features - PHP 7.0.X - Anonymous classes: ● Support for anonymous classes has been added via new class. These can be used in place of full class definitions for throwaway objects:
  • 29. New Features - PHP 7.0.X - Closure::call(): ● Closure::call() is a more performant, shorthand way of temporarily binding an object scope to a closure and invoking it.
  • 30. New Features - PHP 7.0.X - Filtered unserialize(): ● This feature seeks to provide better security when unserializing objects on untrusted data. It prevents possible code injections by enabling the developer to whitelist classes that can be unserialized.
  • 31. New Features - PHP 7.0.X - Group use declarations: ● Classes, functions and constants being imported from the same namespace can now be grouped together in a single use statement.
  • 32. New Features - PHP 7.0.X - Other Features: ● Generator Return Expressions ● Integer division with intdiv() ● preg_replace_callback_array() ● IntlChar ● Unicode codepoint escape syntax
  • 34. Deprecated - PHP 7.0.X - PHP 4 style constructors: ● PHP 4 style constructors (methods that have the same name as the class they are defined in) are deprecated, and will be removed in the future. PHP 7 will emit E_DEPRECATED if a PHP4 constructor is the only constructor defined within a class. Classes that implement a __construct() method are unaffected.
  • 35. Deprecated - PHP 7.0.X - Static calls to non-static methods: ● Static calls to methods that are not declared static are deprecated, and may be removed in the future.
  • 36. Deprecated - PHP 7.0.X - password_hash() salt option: ● The salt option for the password_hash() function has been deprecated to prevent developers from generating their own (usually insecure) salts. The function itself generates a cryptographically secure salt when no salt is provided by the developer - therefore custom salt generation should not be needed.
  • 37. Deprecated - PHP 7.0.X - Other Deprecated: ● capture_session_meta SSL context option. ● ldap_soft() function in library LDAP.
  • 39. New Features - PHP 7.1.X PHP 7.1.X released 01/12/2016.
  • 40. New Features - PHP 7.1.X Nullable types: ● Type declarations for parameters and return values can now be marked as nullable by prefixing the type name with a question mark. This signifies that as well as the specified type, NULL can be passed as an argument, or returned as a value, respectively.
  • 41. New Features - PHP 7.1.X - Void functions: ● Type declarations for parameters and return values can now be marked as nullable by prefixing the type name with a question mark. This signifies that as well as the specified type, NULL can be passed as an argument, or returned as a value, respectively.
  • 42. New Features - PHP 7.1.X - Class constant visibility: ● Support for specifying the visibility of class constants has been added.
  • 43. New Features - PHP 7.1.X - Multi catch exception handling: ● Multiple exceptions per catch block may now be specified using the pipe character (|). This is useful for when different exceptions from different class hierarchies are handled the same.
  • 44. New Features - PHP 7.1.X - Support for keys in list(): ● You can now specify keys in list(), or its new shorthand [] syntax. This enables destructuring of arrays with non-integer or non-sequential keys.
  • 45. New Features - PHP 7.1.X - Support for negative string offsets: ● Support for negative string offsets has been added to the string manipulation functions accepting offsets, as well as to string indexing with [] or {}. In such cases, a negative offset is interpreted as being an offset from the end of the string.
  • 46. Deprecated - PHP 7.1.X - Other Deprecated: ● iterable pseudo-type. ● Support for AEAD in ext/openssl. ● Convert callables to Closures with Closure::fromCallable()
  • 48. Deprecated - PHP 7.1.X - ● Eval option for mb_ereg_replace() and mb_eregi_replace() ● ext/mcrypt
  • 50. New Features - PHP 7.2.X PHP 7.2.X released 30/11/2017.
  • 51. New Features - PHP 7.2.X - New object type: ● A new type, object, has been introduced that can be used for (contravariant) parameter typing and (covariant) return typing of any objects.
  • 52. New Features - PHP 7.2.X - Abstract method overriding: ● Abstract methods can now be overridden when an abstract class extends another abstract class.
  • 53. New Features - PHP 7.2.X - Parameter type widening: ● Parameter types from overridden methods and from interface implementations may now be omitted. This is still in compliance with LSP, since parameters types are contravariant.
  • 54. New Features - PHP 7.2.X - Password hashing with Argon2: ● Argon2 has been added to the password hashing API, where the following constants have been exposed: ○ PASSWORD_ARGON2I ○ PASSWORD_ARGON2_DEFAULT_MEMORY_COST ○ PASSWORD_ARGON2_DEFAULT_TIME_COST ○ PASSWORD_ARGON2_DEFAULT_THREADS
  • 55. New Features - PHP 7.2.X - Other New Features: ● SQLite3 allows writing BLOBs. ● Oracle OCI8 Transparent Application Failover Callbacks. ● Enhancements to the ZIP extension. ● proc_nice() support on Windows.
  • 57. Deprecates - PHP 7.2.X - __autoload() method: ● The __autoload() method has been deprecated because it is inferior to spl_autoload_register() (due to it not being able to chain autoloaders), and there is no interoperability between the two autoloading styles.
  • 58. Deprecates - PHP 7.2.X - ● create_function(). ● parse_str() without a second argument. ● gmp_random() function. ● each() function. ● assert() with a string argument. ● ...
  • 59. Deprecates - PHP 7.2.X - __autoload() method: ● The __autoload() method has been deprecated because it is inferior to spl_autoload_register() (due to it not being able to chain autoloaders), and there is no interoperability between the two autoloading styles.