SlideShare a Scribd company logo
Top ten of php 7.4
Andrea Giannantonio
Team Leader in Immobiliare.it
@JellyBellyDev
RELEASE DATE PHP 7.4
•Alpha1 - 13 Jun 2019
•Beta1 - 25 Jul 2019
•RC1 - 5 Sep 2019
•RC2 - 19 Sep 2019
•RC3 - 03 Oct 2019
•RC4 - 18 Oct 2019
•RC5 - 31 Oct 2019
•RC6 - 14 Nov 2019
•7.4.0 - 28 Nov 2019 (GA)
•7.4.1 - 18 Dec 2019 (GA)
•7.4.2 - 23 Jan 2020 (GA)
TOP TEN
•Typed Properties
•Arrow Functions
•Null Coalescing Assignment Operator
•Spread Operator in Array
•Foreign Function Interface
•Weak References
•Covariant Returns and Contravariant Parameters
•Preloading
•Deprecate left-associative ternary operator
•Performance of PHP 7.4
ONE
Typed Properties
PARAM AND RETURN TYPES: PHP 7.1
Allowed: bool, int, float, string, array, object,
iterable, self, parent, any class or interface
name, and nullable types (?type)
Not Allowed: void and callable
TYPED PROPERTIES: PHP 7.4
TYPED PROPERTIES: NULL
TYPED PROPERTIES: STRICT_TYPES OFF
TYPED PROPERTIES: INVARIANT
Property types (public and protected) are invariant
TWO
Arrow Functions
ARROW FUNCTIONS
ARROW FUNCTIONS
ARROW FUNCTIONS
Syntax: fn(parameter_list) => expr
Note: fn is a reserved word in PHP 7.4
THREE
Spread Operator in Array
SPREAD OPERATOR
Note that this only works with arrays with numerical keys.
SPREAD OPERATOR
It also works on Traversable objects
FOUR
Null Coalescing Assignment Operator
NULL COALESCING ASSIGNMENT OPERATOR
Note that, while the coalesce operator `??` is a comparison operator, `??=` is an assignment operator.
FIVE
Foreign Function Interface
FOREIGN FUNCTION INTERFACE
•Enables the execution of C code directly from PHP
•Provides a FFI class to manage the bridge between C and PHP
•A C function can be executed as a PHP method of FFI class
•php.ini: `ffi.enable=false`
FFI: EXAMPLE 1
FFI: EXAMPLE 2
FFI: PHP TENSORFLOW
Dmitry Stogov has developed an experimental binding
of TensorFlow library in PHP using FFI:
dstogov/php-tensorflow
SIX
Weak References
WEAK REFERENCES
Weak References allow the programmer to retain a reference to an object which does not prevent the
object from being destroyed; They are useful for implementing cache like structures. 
SEVEN
Covariant Returns and Contravariant
Parameters
COVARIANT RETURNS AND CONTRAVARIANT PARAMETERS
Variance is a property of class hierarchies describing how the types of a type constructor
affect subtypes.
•Invariant: if the type of the super-type constrain the type of the subtype.
•Covariant: if the ordering of types is preserved (types are ordered from
more specific to more generic).
•Contravariant: if it reverses the order (types are ordered from more
generic to more specific).
Currently, PHP has mostly invariant parameter and return types, with few exceptions. This
RFC proposes to allow covariance and contravariance on parameter types and return types.
In general, a type constructor can be:
COVARIANT RETURN TYPE: EXAMPLE
CONTRAVARIANT PARAMETER TYPE: EXAMPLE
EIGHT
Preloading
OPCACHE
PRELOADING
"On server startup – before any application code is run – we may load a
certain set of PHP files into memory – and make their contents
“permanently available” to all subsequent requests that will be served by
that server. All the functions and classes defined in these files will be
available to requests out of the box, exactly like internal entities."
Dmitry Stogov
PRELOADING
• Preloading is controlled by a specific php.ini directive: opcache.preload
• This directive specifies a PHP script to be compiled and executed at server start-up
• Each file to cache, should be added in this script using opcache_compile_file()
PRELOADING: COMPOSITION
opcache.preload=“/tmp/preload.php”
OPCache Preloading in Symfony
opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php
PRELOADING: BENCHMARKS
• Preloading disabled
• Naive preloading - all Laravel and application code
I found this benchmark by stitcher.io on Laravel project
• Preloading Optimised - dumped all classes used by `get_declared_classes()`
Scenarios:
PRELOADING: BENCHMARKS
Requests per second Time per request
That's around a 25% performance gain compared to not using
preloading, and an 8% gain compared to using the naive approach.
PRELOADING: CONS
• Restart the web server to update opcache.preload
• Not compatible with host running multiple applications, or multiple
versions of applications
NINE
Deprecate left-associative ternary operator
DEPRECATE LEFT-ASSOCIATIVE TERNARY OPERATOR
Unlike most other languages, the ternary operator in PHP is left-associative rather than right-associative.
Not only being uncommon, it is also confusing for programmers who switch between different languages.
PHP 7.4 proposes to remove the left-associativity and requires the use of parentheses instead.
• Starting from PHP 7.4, nested ternaries without explicit use of parentheses will throw a deprecation warning.
• Starting from PHP 8.0, there will be a compile runtime error.
TEN
Performance of PHP 7.4
PERFORMANCE OF PHP 7.4
• He compared the execution time of PHP7.4RC1 with PHP 7.1, 7.2 and 7.3
• He used Zendbench.php script as benchmark
I found this benchmark on PHP 7.X by Enrico Zimuel
• He took the total execution time
• Full experiment report here
PERFORMANCE OF PHP 7.4: RESULTS
PHP ver. Exec. time (in sec)
7.1.32 455
7.2.22 437
7.3.9 373
7.4RC1 334
PERFORMANCE OF PHP 7.4: RESULTS
PHP 7.4 IS THE FASTEST!
• 7.4RC1 is 26% faster than 7.1.32
• 7.4RC1 is 22% faster than 7.2.22
• 7.4RC1 is 10% faster than 7.3.9
LET’S GO CODING IN PHP 7.4
Thanks for the attention
Andrea Giannantonio
@JellyBellyDev
REFERENCES
• https://www.php.net
• https://wiki.php.net/rfc#php_74
• https://www.zimuel.it/slides/pugtorino/php74#/
• https://www.zimuel.it/blog/benchmarking_PHP74
• https://medium.com/@daniel.dan/whats-new-in-php-7-4-top-10-features-that-you-need-to-know-e0acc3191f0a
• https://kinsta.com/blog/php-7-4/
• https://stitcher.io/blog/new-in-php-74
• https://stitcher.io/blog/php-preload-benchmarks
• https://support.cloud.engineyard.com/hc/en-us/articles/205411888-PHP-Performance-I-Everything-You-Need-to-
Know-About-OpCode-Caches
• https://carbon.now.sh/

More Related Content

PDF
Composing Project Dependencies
PDF
TorqueBox
PPTX
Android Auto instrumentation
PPTX
News In The Net40
PDF
What's new in PHP 7.4
PDF
PHP7.1 New Features & Performance
PDF
SIL - All you need to know about Swift Intermediate Language
PPSX
Community Tech Days C# 4.0
Composing Project Dependencies
TorqueBox
Android Auto instrumentation
News In The Net40
What's new in PHP 7.4
PHP7.1 New Features & Performance
SIL - All you need to know about Swift Intermediate Language
Community Tech Days C# 4.0

What's hot (20)

PDF
Functional programming with Java 8
PDF
Zen and the Art of REST API documentation - MuCon London 2015
PPTX
C-Sharp 6.0 ver2
PDF
java8-patterns
KEY
Using Aspects for Language Portability (SCAM 2010)
PPTX
CPAN Curation
PDF
C# 9 and 10 - What's cool?
PPTX
Java 8 concurrency abstractions
PDF
JDT Embraces Lambda Expressions - EclipseCon North America 2014
PDF
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
PPT
Coldfusion
 
PDF
The Behaviour-Driven Programmer
PPTX
Gdg dev fest 2107 to kotlin, with love
PDF
High Performance Solution for PHP7
PDF
ARB_gl_spirv implementation in Mesa: status update (XDC 2018)
PDF
The Spoofax Language Workbench (SPLASH 2010)
PDF
The compilation process
PDF
Static analysis for perl
PDF
Eclipse and Java 8 - Eclipse Day India 2013
Functional programming with Java 8
Zen and the Art of REST API documentation - MuCon London 2015
C-Sharp 6.0 ver2
java8-patterns
Using Aspects for Language Portability (SCAM 2010)
CPAN Curation
C# 9 and 10 - What's cool?
Java 8 concurrency abstractions
JDT Embraces Lambda Expressions - EclipseCon North America 2014
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Coldfusion
 
The Behaviour-Driven Programmer
Gdg dev fest 2107 to kotlin, with love
High Performance Solution for PHP7
ARB_gl_spirv implementation in Mesa: status update (XDC 2018)
The Spoofax Language Workbench (SPLASH 2010)
The compilation process
Static analysis for perl
Eclipse and Java 8 - Eclipse Day India 2013
Ad

Similar to Top ten of PHP 7.4 (20)

PPTX
Modern Frontend Technology
PPT
Workin ontherailsroad
PPT
WorkinOnTheRailsRoad
PDF
Object Oriented Programming with Laravel - Session 2
PDF
reactive_programming_for_java_developers.pdf
PDF
PHP 7X New Features
PPTX
Cakephp vs. laravel
PPTX
Php Tutorial
PDF
High Availability for OpenStack
PPTX
Php 5.6 vs Php 7 performance comparison
PPTX
Laravel, beyond the framework
PDF
Laravel vs ASP.NET Framework .pdf
PPTX
Php 7 - YNS
PDF
Ratpack Web Framework
PPTX
Laravel vs other leading frameworks.pptx
PPTX
RESTful Services
DOCX
Chapter 9 & chapter 10 solutions
PDF
Making the Most of Modern PHP in Drupal 7
PPTX
Ruby on Rails : First Mile
PDF
Building a Better Mousetrap for the Cloud
Modern Frontend Technology
Workin ontherailsroad
WorkinOnTheRailsRoad
Object Oriented Programming with Laravel - Session 2
reactive_programming_for_java_developers.pdf
PHP 7X New Features
Cakephp vs. laravel
Php Tutorial
High Availability for OpenStack
Php 5.6 vs Php 7 performance comparison
Laravel, beyond the framework
Laravel vs ASP.NET Framework .pdf
Php 7 - YNS
Ratpack Web Framework
Laravel vs other leading frameworks.pptx
RESTful Services
Chapter 9 & chapter 10 solutions
Making the Most of Modern PHP in Drupal 7
Ruby on Rails : First Mile
Building a Better Mousetrap for the Cloud
Ad

Recently uploaded (20)

PPTX
presentation_pfe-universite-molay-seltan.pptx
PPTX
Funds Management Learning Material for Beg
PDF
Introduction to the IoT system, how the IoT system works
PDF
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
PPTX
INTERNET------BASICS-------UPDATED PPT PRESENTATION
PPTX
SAP Ariba Sourcing PPT for learning material
PPT
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
PPT
Ethics in Information System - Management Information System
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PDF
FINAL CALL-6th International Conference on Networks & IOT (NeTIOT 2025)
PPTX
Slides PPTX World Game (s) Eco Economic Epochs.pptx
PPTX
Internet___Basics___Styled_ presentation
PDF
Tenda Login Guide: Access Your Router in 5 Easy Steps
PPTX
Introduction to Information and Communication Technology
PDF
Sims 4 Historia para lo sims 4 para jugar
PDF
Unit-1 introduction to cyber security discuss about how to secure a system
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PPTX
artificial intelligence overview of it and more
DOC
Rose毕业证学历认证,利物浦约翰摩尔斯大学毕业证国外本科毕业证
presentation_pfe-universite-molay-seltan.pptx
Funds Management Learning Material for Beg
Introduction to the IoT system, how the IoT system works
Smart Home Technology for Health Monitoring (www.kiu.ac.ug)
INTERNET------BASICS-------UPDATED PPT PRESENTATION
SAP Ariba Sourcing PPT for learning material
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
Ethics in Information System - Management Information System
Slides PDF The World Game (s) Eco Economic Epochs.pdf
Module 1 - Cyber Law and Ethics 101.pptx
FINAL CALL-6th International Conference on Networks & IOT (NeTIOT 2025)
Slides PPTX World Game (s) Eco Economic Epochs.pptx
Internet___Basics___Styled_ presentation
Tenda Login Guide: Access Your Router in 5 Easy Steps
Introduction to Information and Communication Technology
Sims 4 Historia para lo sims 4 para jugar
Unit-1 introduction to cyber security discuss about how to secure a system
Job_Card_System_Styled_lorem_ipsum_.pptx
artificial intelligence overview of it and more
Rose毕业证学历认证,利物浦约翰摩尔斯大学毕业证国外本科毕业证

Top ten of PHP 7.4

  • 1. Top ten of php 7.4 Andrea Giannantonio Team Leader in Immobiliare.it @JellyBellyDev
  • 2. RELEASE DATE PHP 7.4 •Alpha1 - 13 Jun 2019 •Beta1 - 25 Jul 2019 •RC1 - 5 Sep 2019 •RC2 - 19 Sep 2019 •RC3 - 03 Oct 2019 •RC4 - 18 Oct 2019 •RC5 - 31 Oct 2019 •RC6 - 14 Nov 2019 •7.4.0 - 28 Nov 2019 (GA) •7.4.1 - 18 Dec 2019 (GA) •7.4.2 - 23 Jan 2020 (GA)
  • 3. TOP TEN •Typed Properties •Arrow Functions •Null Coalescing Assignment Operator •Spread Operator in Array •Foreign Function Interface •Weak References •Covariant Returns and Contravariant Parameters •Preloading •Deprecate left-associative ternary operator •Performance of PHP 7.4
  • 5. PARAM AND RETURN TYPES: PHP 7.1
  • 6. Allowed: bool, int, float, string, array, object, iterable, self, parent, any class or interface name, and nullable types (?type) Not Allowed: void and callable TYPED PROPERTIES: PHP 7.4
  • 9. TYPED PROPERTIES: INVARIANT Property types (public and protected) are invariant
  • 13. ARROW FUNCTIONS Syntax: fn(parameter_list) => expr Note: fn is a reserved word in PHP 7.4
  • 15. SPREAD OPERATOR Note that this only works with arrays with numerical keys.
  • 16. SPREAD OPERATOR It also works on Traversable objects
  • 18. NULL COALESCING ASSIGNMENT OPERATOR Note that, while the coalesce operator `??` is a comparison operator, `??=` is an assignment operator.
  • 20. FOREIGN FUNCTION INTERFACE •Enables the execution of C code directly from PHP •Provides a FFI class to manage the bridge between C and PHP •A C function can be executed as a PHP method of FFI class •php.ini: `ffi.enable=false`
  • 23. FFI: PHP TENSORFLOW Dmitry Stogov has developed an experimental binding of TensorFlow library in PHP using FFI: dstogov/php-tensorflow
  • 25. WEAK REFERENCES Weak References allow the programmer to retain a reference to an object which does not prevent the object from being destroyed; They are useful for implementing cache like structures. 
  • 26. SEVEN Covariant Returns and Contravariant Parameters
  • 27. COVARIANT RETURNS AND CONTRAVARIANT PARAMETERS Variance is a property of class hierarchies describing how the types of a type constructor affect subtypes. •Invariant: if the type of the super-type constrain the type of the subtype. •Covariant: if the ordering of types is preserved (types are ordered from more specific to more generic). •Contravariant: if it reverses the order (types are ordered from more generic to more specific). Currently, PHP has mostly invariant parameter and return types, with few exceptions. This RFC proposes to allow covariance and contravariance on parameter types and return types. In general, a type constructor can be:
  • 32. PRELOADING "On server startup – before any application code is run – we may load a certain set of PHP files into memory – and make their contents “permanently available” to all subsequent requests that will be served by that server. All the functions and classes defined in these files will be available to requests out of the box, exactly like internal entities." Dmitry Stogov
  • 33. PRELOADING • Preloading is controlled by a specific php.ini directive: opcache.preload • This directive specifies a PHP script to be compiled and executed at server start-up • Each file to cache, should be added in this script using opcache_compile_file()
  • 34. PRELOADING: COMPOSITION opcache.preload=“/tmp/preload.php” OPCache Preloading in Symfony opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php
  • 35. PRELOADING: BENCHMARKS • Preloading disabled • Naive preloading - all Laravel and application code I found this benchmark by stitcher.io on Laravel project • Preloading Optimised - dumped all classes used by `get_declared_classes()` Scenarios:
  • 36. PRELOADING: BENCHMARKS Requests per second Time per request That's around a 25% performance gain compared to not using preloading, and an 8% gain compared to using the naive approach.
  • 37. PRELOADING: CONS • Restart the web server to update opcache.preload • Not compatible with host running multiple applications, or multiple versions of applications
  • 39. DEPRECATE LEFT-ASSOCIATIVE TERNARY OPERATOR Unlike most other languages, the ternary operator in PHP is left-associative rather than right-associative. Not only being uncommon, it is also confusing for programmers who switch between different languages. PHP 7.4 proposes to remove the left-associativity and requires the use of parentheses instead. • Starting from PHP 7.4, nested ternaries without explicit use of parentheses will throw a deprecation warning. • Starting from PHP 8.0, there will be a compile runtime error.
  • 41. PERFORMANCE OF PHP 7.4 • He compared the execution time of PHP7.4RC1 with PHP 7.1, 7.2 and 7.3 • He used Zendbench.php script as benchmark I found this benchmark on PHP 7.X by Enrico Zimuel • He took the total execution time • Full experiment report here
  • 42. PERFORMANCE OF PHP 7.4: RESULTS PHP ver. Exec. time (in sec) 7.1.32 455 7.2.22 437 7.3.9 373 7.4RC1 334
  • 43. PERFORMANCE OF PHP 7.4: RESULTS PHP 7.4 IS THE FASTEST! • 7.4RC1 is 26% faster than 7.1.32 • 7.4RC1 is 22% faster than 7.2.22 • 7.4RC1 is 10% faster than 7.3.9
  • 44. LET’S GO CODING IN PHP 7.4
  • 45. Thanks for the attention Andrea Giannantonio @JellyBellyDev
  • 46. REFERENCES • https://www.php.net • https://wiki.php.net/rfc#php_74 • https://www.zimuel.it/slides/pugtorino/php74#/ • https://www.zimuel.it/blog/benchmarking_PHP74 • https://medium.com/@daniel.dan/whats-new-in-php-7-4-top-10-features-that-you-need-to-know-e0acc3191f0a • https://kinsta.com/blog/php-7-4/ • https://stitcher.io/blog/new-in-php-74 • https://stitcher.io/blog/php-preload-benchmarks • https://support.cloud.engineyard.com/hc/en-us/articles/205411888-PHP-Performance-I-Everything-You-Need-to- Know-About-OpCode-Caches • https://carbon.now.sh/