PHP 8 ile Gelen Yeni Özellikler

Dünya çapında bilinen ve kullanılan PHP programlama dilinin son versiyonu olan PHP 8.0, daha eski versiyonlarına göre köklü değişimler içeriyor. Bu eklenen değişimler yazılımcıları da heyecanlandırıyor. Hadi şimdi PHP 8.0 ile eklenen değişimlere bakalım.
Yapıcı Değişkenler (Constructor)
PHP 8.0 ile sınıflarda yapıcı değişkenleri birer birer atamamıza gerek kalmıyor. Önceden değişkenleri tanımlayıp daha sonra atama yapılıyordu. PHP 8.0 ile yapıcı metotlarda hem tanımlama hemde atama yapılabilecek.
PHP 8’ den eski sürümlerde,
class OrnekClass{
public float $a;
public float $b;
public float $c;
public function __construct( float $a = 0.0, float $b = 0.0, float $c = 0.0, ) {
$this->a = $a;
$this->b = $b;
$this->c = $c;
}
}
PHP 8,
class OrnekClass{
public function __construct( public float $a = 0.0, public float $b = 0.0, public float $c = 0.0, ){
}
}
Çoklu Tür (Union Types)
Çok tür özelliği ile değişkene birden fazla tür özelliği ekleyebiliyoruz. Bu özellik olmadan önce aşağıdaki gibi belirleniyordu.
PHP 8’ den önceki sürümlerde,
class OrnekClass{
/** @var int|float */
private $number;
/**
* @param float|int $number
*/
public function __construct($number) {
$this->number = $number;
}
}
PHP 8,
class OrnekClass{
public function __construct( private int|float $number ) {
}
}
match() Fonksiyonu (Yeni Eşleşme İfadesi)
switch-case yapısına alternatif olarak yapılan diğer değişiklik ise match() fonksiyonudur. Bu match() fonksiyonu ile sonuç bir değişkene atılabiliyor.
PHP 8’ den önceki sürümlerde,
switch (8.0) {
case '8.0':
$sonuc = "Başarısız";
break;
case 8.0:
$sonuc = "Başarılı";
break;
}
echo $sonuc;
PHP 8,
echo match (8.0) {
'8.0' => "Başarısız",
8.0 => "Başarılı",
};
Nullsafe Operatörü
Nullsafe operatörü ile bir değişkenin var olup olmadığını kontrol etmek için kullanılıyor. Uzun uzun if else sorgusu yazmaktan bizi Nullsafe operatörü kurtarıyor.
PHP 8’ den önceki sürümlerde,
if ($user != null){
$country = $user->getCountry();
}
PHP 8,
$country = $user?->getCountry();
?-> işaretinden önceki değer boş ise getCountry() fonksiyonu çağırılmadan işlem sonlanacaktır.
Dizilerde negatif değer
PHP 8.0 güncellemesi ile eklenen diğer özellik ise diziler negatif değer ile başlayabilecek.
PHP 8’ den önceki sürümlerde,
$array = [-3 => "merhaba", "x", "y", "z"];
print_r($array);
/*
Array
(
[-3] => merhaba
[0] => x
[1] => y
[2] => z
)
*/
PHP 8,
$array = [-3 => "merhaba", "x", "y", "z"];
print_r($array);
/*
Array
(
[-3] => merhaba
[-2] => x
[-1] => y
[0] => z
)
*/

