Preview: What to Expect from PHP8

what to expect from PHP8

Did you know that the official release date of the new PHP 8 is December 3rd, 2020?

The new version of the PHP 8 will include a lot of breakthrough changes, as well as further improvements in performance, and even newly added features! With all of the new changes that are coming to PHP 8, prepare yourself to make some changes in your code to get yourself back up and running.

Keep in mind that if you’ve kept your code up-to-date, you likely won’t have too hard of a time getting everything back up and running. Are you interested in learning what to expect from PHP 8?

We’ve created a complete guide for you here. Keep reading to learn about the breakthrough changes and new features in PHP 8!

What Are the New Features That Come With PHP 8?

Let’s first start off with the new features that you can find in PHP 8! Since PHP 8 is still currently in active development, you can expect this list to continue growing.

JIT

Just in time, also referred to as JIT, sees huge improvements in performance. While this doesn’t mean that it is improving within web requests, there are more thorough benchmarks.

New Types of Static Returns

Before PHP 8, static wasn’t a valid return available. However, as a result of the dynamically typed character of PHP 8, having a new static return type will prove to be very useful.

Union Types

If you’re unsure what union types are, they’re a collection of two (or more) types and designate which type will be used. In the updated PHP 8, any nullable unions can be recorded as ? or as |null.

New Mixed Types

The mixed type is something that a lot of developers have mixed feelings about. However, there’s one thing that can be agreed upon — when there’s a missing type, it can wreak havoc. Some of the things that you can expect to see with a missing type in PHP include:

  • Expecting one of several types
  • A function is null or doesn’t return anything
  • A type appears that can’t be type hinted

By adding a mixed type, you can expect to see one of the following types:

  • Int
  • Object
  • String
  • Callable
  • Array
  • Bool
  • Float
  • Null
  • Resource

You should also be aware that since mixed already has null, PHP isn’t allowed to make the type nullable. In fact, it will simply trigger an error.

Breaking Down the PHP JIT

One of the newest updates to PHP 8 is JIT! JIT was executed to be independent of OPcache.

There may be times where JIT is disabled (or enabled) at run time and during the compile time. When JIT is enabled, files that contain native code will be stored in an extra section of the shared memory in OPcache.

What’s the Difference Between JIT and OPcache?

The entirety of the execution process of PHP includes:

  1. Tokenizing, which is where the coding interpreter will read through the PHP code and develop a selection of tokens.
  2. Parsing, which is when the interpreter will look through to ensure that the script matches the tokens that were used to create an AST, as well as to make sure that the syntax rules are matching.
  3. Compilation, which is when the AST is translated into low-level Zend opcodes. This creates identities that allow the interpreter to identify the Zend VM instruction.
  4. Interpretation, which allows the Opcodes to be interpreted to be able to run on Zend VM.

How does working with OPcache make PHP run faster? By using the OPcache extension, preloading, and JIT!

OPcache Extension

Since PHP is interpreted, it means that when PHP is running, the interpreter has to parse, comply, and finalize each request, every time a new one is made. This results in CPU resources being wasted.

By using the OPcache extension, it helps to improve the overall performance of the PHP by using precompiled script bytecode. This code is stored in the shared memory, which eliminates the need for PHP to parse, comply, and finalize each individual request that’s created.

This means that the PHP interpreter will only have to go through the four-step process that we discussed early the first time that the script is enabled. Since these bytecodes are immediately available in the stored memory, they can be easily accessed as low-level intermediate representation and used towards Zend VM.

JIT

The Just in Time compiler uses the immediate parts of code and uses them into machine code. This is beneficial, as it forces a bypass compilation. This improves both the memory usage and the performance of PHP.

However, like the previous attempts – it currently doesn’t seem to significantly improve real-life apps like WordPress. It’s planned to provide additional effort, improving JIT for real-life apps, using profiling and speculative optimizations.

Understanding What to Expect From PHP8

By reading through this guide, we hope that you have a better idea of what to expect from PHP 8 when it’s released! In this guide, we covered the majority of the improvements, new additions, and the most important changes that you can expect to see from PHP 8.

One of the most talked-about sections is the JIT compiler, but know that there’s so much more that will be added with PHP 8!

Are you interested in learning more about how PHP 8 can benefit you? Feel free to schedule a tour with us today to learn more about why we have the best WordPress Managed Hosting!

Zach Wiesman

Zach brings a wealth of knowledge to Pressable with more than 12 years of experience in the WordPress world. His journey in WordPress began with creating and maintaining client websites, fostering a deep understanding of the intricacies and challenges of WordPress. Later, his knack for problem-solving and commitment to service led him to pursue a role at Automattic, where he excelled in providing customer support for WooCommerce. His expertise extends beyond technical proficiency to encompass a deep understanding of the WordPress community and its needs. Outside of work, Zach enjoys spending time with his family, playing and watching sports, and working on projects around the house.

Related blog articles