PHP 8.0 Yenilikler
NAMED ARGUMENTS
Artık fonksiyonlara / method’lara parametreleri sırasıyla geçmek zorunda değiliz. Parametrenin adını belirterek, istediğimiz sırada kullanabiliyoruz. Kodun daha okunaklı ve anlaşılır olmasına katkısı olacağını düşünüyorum.
3 argüman alabilen round($val, $precision, $mode) fonksiyonu ile örnekleyelim. 2. sıradaki argümanı (precision) göndermeden 1. ve 3. sıradaki argümanla bu fonksiyonu çağırabileceğiz. İkinci örnekte in_array fonksiyonunda named argument kullanımını görebilirsiniz.
<?php
// PHP 7
round(1.49, 0, PHP_ROUND_HALF_UP);
// PHP 8 (2. SIRADAKI PARAMETREYI GONDERMEDIK)
round(val: 1.49, mode: PHP_ROUND_HALF_UP);
// PHP 7
in_array("FIFA", ["CALL OF DUTY","FIFA","PUBG"]);
// PHP 8
in_array(
needle: "FIFA",
haystack: ["CALL OF DUTY","FIFA","PUBG"]
);NULLSAFE OPERATOR
Eski versiyonlarda null kontrolü için if yazıyorduk. Artık bunu yapmak için soru işareti operatörünü kullanmamız yeterli olacak. Aslında Swift, C#, JavaScript gibi dillerde zaten bu özellik bulunuyordu.
<?php
// PHP 7
if($user != null) {
$socialAccounts = $user->getSocialAccounts();
if($socialAccounts->getFacebook() != null) {
$facebookAccount = $socialAccounts->getFacebook();
}
}
// PHP 8
$facebookAccount = $user?->getSocialAccounts()?->getFacebook();
MATCH EXPRESSION
Artık switch ile çok benzer başka bir eşleştirme / karşılaştırma alternatifimiz var; Match.
Kullanımı oldukça basit.
<?php
// PHP 7 (Switch)
switch ($status) {
case 0: return 'Disable';
case 1: return 'Enable';
}
// PHP 8
match($status) {
0 => "Disable",
1 => "Enable",
};
NON CAPTURING CATCHES
Artık bir exception yakaladığımızda bunu bir değişkene atamak zorunda değiliz. Sadece Exception objesini kullanacağımız zaman değişkene atayabiliriz.
<?php
// PHP 7
try {
User::get($userId);
} catch (UserNotFound $e) {
return "User Not Found!";
}
// PHP 8
try {
User::get($userId);
} catch (UserNotFound) { // not declared $e
return "User Not Found!";
}



