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

What's hot

Hyperledger 구조 분석
Hyperledger 구조 분석Hyperledger 구조 분석
Hyperledger 구조 분석
Jongseok Choi
 
Effective Go
Effective GoEffective Go
Effective Go
Jongseok Choi
 
Metamodeling of custom Pharo images
 Metamodeling of custom Pharo images Metamodeling of custom Pharo images
Metamodeling of custom Pharo images
ESUG
 
In Vogue Dynamic
In Vogue DynamicIn Vogue Dynamic
In Vogue Dynamic
Alexander Shopov
 
From Java 6 to Java 7 reference
From Java 6 to Java 7 referenceFrom Java 6 to Java 7 reference
From Java 6 to Java 7 reference
Giacomo Veneri
 
Zend Framework 2 Components
Zend Framework 2 ComponentsZend Framework 2 Components
Zend Framework 2 Components
Shawn Stratton
 
Last 2 Months in PHP - July & August 2016
Last 2 Months in PHP - July & August 2016Last 2 Months in PHP - July & August 2016
Last 2 Months in PHP - July & August 2016
Eric Poe
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Ovidiu Farauanu
 
Boosting Developer Productivity with Clang
Boosting Developer Productivity with ClangBoosting Developer Productivity with Clang
Boosting Developer Productivity with Clang
Samsung Open Source Group
 
Lock free programming - pro tips devoxx uk
Lock free programming - pro tips devoxx ukLock free programming - pro tips devoxx uk
Lock free programming - pro tips devoxx uk
Jean-Philippe BEMPEL
 
JVM
JVMJVM
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
Platonov Sergey
 
Template Method Design Pattern
Template Method Design PatternTemplate Method Design Pattern
Template Method Design Pattern
Srikanth Shreenivas
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java Platform
JavaDayUA
 
Processor Verification Using Open Source Tools and the GCC Regression Test Suite
Processor Verification Using Open Source Tools and the GCC Regression Test SuiteProcessor Verification Using Open Source Tools and the GCC Regression Test Suite
Processor Verification Using Open Source Tools and the GCC Regression Test SuiteDVClub
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)
Ovidiu Farauanu
 
Runtime Symbol Resolution
Runtime Symbol ResolutionRuntime Symbol Resolution
Runtime Symbol Resolution
Ken Kawamoto
 
Intrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMIntrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VM
Kris Mok
 

What's hot (20)

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

Similar to PHP 7X New Features

Php 7 - YNS
Php 7 - YNSPhp 7 - YNS
Php 7 - YNS
Alex Amistad
 
PHP 5.6 New and Deprecated Features
PHP 5.6  New and Deprecated FeaturesPHP 5.6  New and Deprecated Features
PHP 5.6 New and Deprecated Features
Mark Niebergall
 
Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?
Wim Godden
 
Php5 vs php7
Php5 vs php7Php5 vs php7
Php5 vs php7
gentlex2
 
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
DrupalMumbai
 
Php7
Php7Php7
Last Month in PHP - February 2017
Last Month in PHP - February 2017Last Month in PHP - February 2017
Last Month in PHP - February 2017
Eric Poe
 
PHP 8: What's New and Changed
PHP 8: What's New and ChangedPHP 8: What's New and Changed
PHP 8: What's New and Changed
Ayesh Karunaratne
 
Last train to php 7
Last train to php 7Last train to php 7
Last train to php 7
Damien Seguy
 
Learning php 7
Learning php 7Learning php 7
Learning php 7
Ed Lomonaco
 
Guidelines php 8 gig
Guidelines php 8 gigGuidelines php 8 gig
Guidelines php 8 gig
Ditinus Technology Pvt LTD
 
Php 7.2 compliance workshop php benelux
Php 7.2 compliance workshop php beneluxPhp 7.2 compliance workshop php benelux
Php 7.2 compliance workshop php benelux
Damien Seguy
 
Start using PHP 7
Start using PHP 7Start using PHP 7
Start using PHP 7
Oscar Merida
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016
Eric Poe
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshop
julien pauli
 
The why and how of moving to php 7.x
The why and how of moving to php 7.xThe why and how of moving to php 7.x
The why and how of moving to php 7.x
Wim Godden
 
The why and how of moving to php 7.x
The why and how of moving to php 7.xThe why and how of moving to php 7.x
The why and how of moving to php 7.x
Wim Godden
 
What is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNTWhat is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNTFramgia Vietnam
 
PHP 7 Crash Course
PHP 7 Crash CoursePHP 7 Crash Course
PHP 7 Crash Course
Colin O'Dell
 
Php 7 crash course
Php 7 crash coursePhp 7 crash course
Php 7 crash course
Khaireddine Hamdi
 

Similar to PHP 7X New Features (20)

Php 7 - YNS
Php 7 - YNSPhp 7 - YNS
Php 7 - YNS
 
PHP 5.6 New and Deprecated Features
PHP 5.6  New and Deprecated FeaturesPHP 5.6  New and Deprecated Features
PHP 5.6 New and Deprecated Features
 
Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?
 
Php5 vs php7
Php5 vs php7Php5 vs php7
Php5 vs php7
 
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
20 cool features that is in PHP 7, we missed in PHP 5. Let walkthrough with t...
 
Php7
Php7Php7
Php7
 
Last Month in PHP - February 2017
Last Month in PHP - February 2017Last Month in PHP - February 2017
Last Month in PHP - February 2017
 
PHP 8: What's New and Changed
PHP 8: What's New and ChangedPHP 8: What's New and Changed
PHP 8: What's New and Changed
 
Last train to php 7
Last train to php 7Last train to php 7
Last train to php 7
 
Learning php 7
Learning php 7Learning php 7
Learning php 7
 
Guidelines php 8 gig
Guidelines php 8 gigGuidelines php 8 gig
Guidelines php 8 gig
 
Php 7.2 compliance workshop php benelux
Php 7.2 compliance workshop php beneluxPhp 7.2 compliance workshop php benelux
Php 7.2 compliance workshop php benelux
 
Start using PHP 7
Start using PHP 7Start using PHP 7
Start using PHP 7
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshop
 
The why and how of moving to php 7.x
The why and how of moving to php 7.xThe why and how of moving to php 7.x
The why and how of moving to php 7.x
 
The why and how of moving to php 7.x
The why and how of moving to php 7.xThe why and how of moving to php 7.x
The why and how of moving to php 7.x
 
What is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNTWhat is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNT
 
PHP 7 Crash Course
PHP 7 Crash CoursePHP 7 Crash Course
PHP 7 Crash Course
 
Php 7 crash course
Php 7 crash coursePhp 7 crash course
Php 7 crash course
 

Recently uploaded

GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 

Recently uploaded (20)

GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 

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.