Vanaf vandaag is PHP 8.2 uit en daar zitten de nodige verbeteringen in die ontwikkelaars kunnen helpen met hun applicaties. Voor een complete lijst van de release, klik hier.
Verberg gevoelige parameters
In veel applicatie's is het normaal om je exceptions te versturen naar een externe dienst zoals bijvoorbeeld Sentry. Ontwikkelaars hebben er vaak een ontevreden gevoel bij dat het wachtwoord dan soms in de stack traces zitten opgenomen. PHP 8.2 heeft hier een oplossing voor om dit te voorkomen: SensitiveParameter
.
function login(
string $user,
#[\SensitiveParameter] string $password
) {
// …
throw new Exception('Error');
}
login('root', 'root');
Fatal error: Uncaught Exception: Error in login.php:8
Stack trace:
#0 login.php(11): login('root', Object(SensitiveParameterValue))
#1 {main}
thrown in login.php on line 8
Constants in traits
Wanneer je constanten wilt hergebruiken binnen je code kun je nu deze toevoegen aan je trait. Bijvoorbeeld:
trait Statuses
{
public const INACTIVE = 0;
public const ACTIVE = 1;
public function active(): int
{
return self::ACTIVE;
}
public function inactive(): int
{
return self::INACTIVE;
}
}
Je kunt de constanten niet aanroepen op de trait, maar wel in de class waarin ze gebruikt worden.
class User
{
use Statuses;
}
User::INACTIVE; // 0
User::ACTIVE; // 1
Readonly classes
Sinds PHP 8.1 is het mogelijk om properties readonly
te maken. In sommige gevallen is het makkelijker om een hele class gelijk readonly
te maken en dat is mogelijk van versie 8.2.
Dus in plaats van:
class Article
{
public function __construct(
public readonly string $title,
public readonly string $author,
public readonly string $body,
public readonly DateTime $publishedAt,
) {}
}
Kun je in PHP 8.2 gewoon het volgende doen:
readonly class Article
{
public function __construct(
public string $title,
public string $author,
public string $body,
public DateTime $publishedAt,
) {}
}
Nieuwe Random extensie
PHP 8.2 heeft een nieuwe random nummer generator welke veel problemen van de vorige versies oplost. Het is sneller, veiliger en makkelijker te onderhouden.
Er is een nieuwe class genaamd Randomizer
welke een engine als parameter heeft. Je kunt deze dus veranderen op basis van je behoeften. Bijvoorbeeld:
$rng = $is_production
? new Random\Engine\Secure()
: new Random\Engine\Mt19937(1234);
$randomizer = new Random\Randomizer($rng);
$randomizer->shuffleString('foobar');
null, true en false als standalone types
Tot PHP 8.2 was het wel mogelijk om bijvoorbeeld false
als return type terug te geven, maar alleen samen met een andere type. Bijvoorbeeld:
function returnsFalse(): string|false
{
return false;
}
Maar nu is het ook mogelijk om dit als standalone type terug te geven, dus:
function returnsFalse(): false
{
return false;
}
Meer informatie
Voor meer informatie bekijk de onderstaande video:
Of ga naar de officiele pagina van php.net over deze release: https://www.php.net/releases/8.2/en.php.