What's New in PHP 8.4?
See what are the top new features in PHP 8.4, which is due to be released Nov 21, 2024
What will change in PHP 8.4?
PHP 8.4 introduces many changes but let's be honest, most are small and/or irrelevant for 99% of us. Here are the changes that really matter though, and are easy to miss when checking out the list.
List of most important PHP 8.4 Changes
Here are two most important changes you should know about. Expected release date is Nov 21, 2024.
Property Hooks - forget about getters/setters
If you've ever written getter or setter methods for private/protected fields of your class (you did that a lot if you've worked with Symfony Doctrine entities), you'll appreciate the change.
Instead of this:
class Foo
{
private int $runs = 0;
public function getRuns(): int { return $this->runs; }
public function setRuns(int $runs): void
{
if ($runs <= 0) throw new Exception();
$this->runs = $runs;
}
}
$f = new Foo();
$f->setRuns($f->getRuns() + 1);
Can now be written as:
class Foo
{
public int $runs = 0 {
set {
if ($value <= 0) throw new Exception();
$this->runs = $value;
}
}
}
$f = new Foo();
$f->runs++;
Adding getter (get) or setter (set) is optional! The idea is that properties can be safely made public, as using getters/setters, you can control how they are read and written to.
new Class()->method()
You (most probably) won't have to wrap the newly instantiated class, of which method you want to immediately call with parenthesis. Previously, you had to write:
(new Class())->method();
Not wrapping new Class()
with parenthesis caused a syntax error.
Now, this (most probably, if the RFC gets into PHP 8.4) will no longer be a syntax error:
new Class()->method();