- Mesaj
- 11.941
- Çözümler
- 567
- Beğeni
- 13.659
- Puan
- 5.915
- Ticaret Puanı
- 2
Web geliştiriciliğinde sıklıkla kullanılan PHP dilinin 8. versiyonu 26 Kasım 2020 tarihinde duyuruldu.
PHP 8 ile nelerin değiştiğini öğrenmek isterseniz
İlgili sayfada gösterilen örnekler;
php 8
php 8
Burada ideler için yazdığımız fonksiyonunun açıklamalarını eklerken /* */ yorum satırları içerisinde yazabiliyorduk. Artık # ile de açıklamaları yazabileceğiz.
php 8
Burda ise sınıf içerisinde değişken tanımlıyorduk. Artık php8 ile beraber __construct içerisinde değişkenleri oluşturup değer atabiliyoruz.
php 8
Sınıflara tanımladığımız değişkenlerin hangi tür alabileceğini /** */ yorum satırları içerisine ekleyebiliyorduk. php8 ile beraber yorum satırlarını kullanmadan veritürlerini tanımlayabiliyoruz. Ve artık belirlediğimiz veritüründen farklı bir değer gelirse sistem hata yazdıracak.
php 8
Bu örnekte ise switch yapısını daha pratik şekilde kullanma yöntemini gösteriyor.
php 8
Her değer için tek tek if blokları açmak yerine örnekteki gibi tek satırda kontrol edebileceğiz.
Eğer sıralardan herhangi birisi başarısız olursa devamını getirmeyecek boş değer atacak.
Bu gayet iyi bi özellik olmuş.
php 8 ile yeni gelen attribute özelliği hakkında detaylı bilgi edinmek için şu videoyu izleyebilirsiniz;
PHP 8 ile nelerin değiştiğini öğrenmek isterseniz
Linkleri görebilmek için
giriş yap veya kayıt ol.
bakabilirsiniz.İlgili sayfada gösterilen örnekler;
Named Arguments
php 7
PHP:
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
php 8
PHP:
htmlspecialchars($string, double_encode: false);
Attributes
php 7
PHP:
class PostsController
{
/**
* @Route("/api/posts/{id}", methods={"GET"})
*/
public function get($id) { /* ... */ }
}
php 8
PHP:
class PostsController
{
#[Route("/api/posts/{id}", methods: ["GET"])]
public function get($id) { /* ... */ }
}
Burada ideler için yazdığımız fonksiyonunun açıklamalarını eklerken /* */ yorum satırları içerisinde yazabiliyorduk. Artık # ile de açıklamaları yazabileceğiz.
Constructor property promotion
php 7
PHP:
class Point {
public float $x;
public float $y;
public float $z;
public function __construct(
float $x = 0.0,
float $y = 0.0,
float $z = 0.0,
) {
$this->x = $x;
$this->y = $y;
$this->z = $z;
}
}
php 8
PHP:
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}
Burda ise sınıf içerisinde değişken tanımlıyorduk. Artık php8 ile beraber __construct içerisinde değişkenleri oluşturup değer atabiliyoruz.
Union types
php 7
PHP:
class Number {
/** @var int|float */
private $number;
/**
* @param float|int $number
*/
public function __construct($number) {
$this->number = $number;
}
}
new Number('NaN'); // Ok
php 8
PHP:
class Number {
public function __construct(
private int|float $number
) {}
}
new Number('NaN'); // TypeError
Sınıflara tanımladığımız değişkenlerin hangi tür alabileceğini /** */ yorum satırları içerisine ekleyebiliyorduk. php8 ile beraber yorum satırlarını kullanmadan veritürlerini tanımlayabiliyoruz. Ve artık belirlediğimiz veritüründen farklı bir değer gelirse sistem hata yazdıracak.
Match expression
php 7
PHP:
switch (8.0) {
case '8.0':
$result = "Oh no!";
break;
case 8.0:
$result = "This is what I expected";
break;
}
echo $result;
//> Oh no!
php 8
PHP:
echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};
//> This is what I expected
Bu örnekte ise switch yapısını daha pratik şekilde kullanma yöntemini gösteriyor.
Nullsafe operator
php 7
PHP:
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
php 8
PHP:
$country = $session?->user?->getAddress()?->country;
Her değer için tek tek if blokları açmak yerine örnekteki gibi tek satırda kontrol edebileceğiz.
Eğer sıralardan herhangi birisi başarısız olursa devamını getirmeyecek boş değer atacak.
Bu gayet iyi bi özellik olmuş.
php 8 ile yeni gelen attribute özelliği hakkında detaylı bilgi edinmek için şu videoyu izleyebilirsiniz;