Once a year, I review the latest developments in the PHP world and look forward to what's ahead. Just like 2020 and 2019, we are here again!
Like I say time and time again: PHP is not the same language as it was ten years ago, and for that we are very grateful. It is a fast and reliable language for building large applications at scale. So let’s discuss some of the most notable changes to the language and community in PHP in the past year.
PHP 8 and later
The new major version PHP 8 was launched late last year. I've written a lot on this topic, I won't copy/paste everything here. As always, performance is only improving, as shown by benchmarks done by Kinsta.
There is also a JIT which can really improve the performance of some projects, and if you are not using shared hosting, preloading can have a positive impact on the overall project.
I think features like properties (also called "annotations"), named parameters, and promoted attributes are also worth mentioning, as they definitely contributed to making PHP 8 such a great release.
At the same time, the core team is already developing a new version of PHP 8.1, which will be released at the end of 2021. Currently, the most important functions are enums and fibers, which I will mention again later in this article. postal.
Year after year, the core team successfully brings the community a new stable version with many features and quality of life improvements. The upgrade path is no longer that difficult either. I upgraded some of my projects from PHP 7.4 to PHP 8, and it only took about an hour per project. There really is no reason to stay behind!
PHP’s Type System
There’s actually some very exciting news about types: enums will be added in PHP 8.1. On top of that, we also saw some static analysis tool maintainers contribute to PHP's source code by landing the first RFC. This adds the never type, which is useful for static analysis.
Speaking of static analysis tools, PhpStorm has added built-in support for Psalm and PhpStan, an important step towards wider adaptation.
Unfortunately, there is still no support for generic drugs. There are some major roadblocks, especially since we're still dealing with dynamically typed languages. Nikita outlines these issues here. Personally, my approach would be the simple one: support only runtime-erased generics, and rely on static analysis. This requires not only a technical solution, but also a change in thinking within the entire PHP community. Maybe one day it will become a viable option, but so far not yet.
Asynchronous PHP
There’s big news recently: PHP is getting coroutines — aka. Green Threads — In PHP 8.1! Although, fiber (also known as fibre) may not be as big of a game-changer as you think.
Even though fiber itself may be just a small cog in the larger asynchronous computer, the RFC has once again brought attention to the asynchronous community, and we can only be happy about it. Asynchronous frameworks such as Amphp and ReactPHP are becoming increasingly popular, and recently Laravel announced built-in support for Swoole.
Community
I can’t help but mention the de facto standard package manager Composer. It released a new major version in October 2020: Composer 2.0. This release features some UX improvements, but most importantly it achieves huge performance improvements, sometimes being three times faster even on a fresh install.
Speaking of composers, I like to gauge the current state of the PHP ecosystem by looking at the packages available over time. Last year, I talked about 25 million downloads per day, and today that number has more than doubled and we're at 60 million downloads per day.
Finally, take a look at the graph listing the number of packages and versions over time. It can also be found on their website. You can clearly see a healthy ecosystem growing and there is no end in sight.
Language
Finally, let’s take a look back at everything that has been added to PHP in the last few years. If you haven't been keeping up with it, you really want to check this list out. I think this shows how much the community and core development team have grown in recent years, and I'm sure there's more growth to come.
Enums
#Fibers
Named Arguments
Constructor Property Promotion
Short closures
Null coalescing operator
Traits
Typed properties
Spread operator
FFI
Return type declarations
Generators
All that to say Yes: PHP is alive and well. Every year I feel more satisfied with the direction the language is taking and hope to use it for many years to come!
php Chinese website translated from: https://stitcher.io/blog/php-in-2021, thanks to the original author Brent!