Php 8 Yayınlandı

PHP geliştirme ekibi 26 Kasım’da PHP 8'in yayınlandığını duyurdu hadi yeni özelliklere birlikte bakalım :

PHP 8.0, PHP dilinin büyük bir güncellemesidir.
Adlandırılmış bağımsız değişkenler, birleşim türleri, öznitelikler, yapıcı özellik yükseltmesi, eşleşme ifadesi, boş güvenlik operatörü, JIT ve tür sistemindeki iyileştirmeler, hata işleme ve tutarlılık dahil olmak üzere birçok yeni özellik ve optimizasyon içerir.

İşte ana yeni özelliklerin listesi:

  • Union Types
  • Adlandırılmış Bağımsız Değişkenler
  • Match Expressions
  • Attributes
  • Constructor Property
  • Nullsafe Operatörü
  • Weak Maps
  • Tam Zamanında Derleme
  • Ve çok daha fazlası…

Duyurudan bazı önemli noktalar şunlardır:

PHP 8 Adlandırılmış Bağımsız Değişkenler

// PHP 7
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
// PHP 8
// Specify only required parameters, skipping optional ones.
// Arguments are order-independent and self-documented.
htmlspecialchars($string, double_encode: false);

PHP 8 Attributes

PHPDoc ek açıklamaları yerine, artık PHP’nin yerel sözdizimiyle yapılandırılmış meta verileri kullanabilirsiniz.

// PHP 7
class PostsController
{
/**
* @Route("/api/posts/{id}", methods={"GET"})
*/
public function get($id) { /* ... */ }
}
// PHP 8
class PostsController
{
#[Route("/api/posts/{id}", methods: ["GET"])]
public function get($id) { /* ... */ }
}

PHP 8 Constructor Property

Özellikleri tanımlamak ve başlatmak için daha az standart kod.

// PHP 7
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
class Point {
public function __construct(
public float $x = 0.0,
public float $y = 0.0,
public float $z = 0.0,
) {}
}

PHP 8 Union Types

Bir tür kombinasyonu için PHPDoc ek açıklamaları yerine, çalışma zamanında doğrulanan yerel birleşim türü bildirimlerini kullanabilirsiniz.

// PHP 7
class Number {
/** @var int|float */
private $number;
/**
* @param float|int $number
*/
public function __construct($number) {
$this->number = $number;
}
}
new Number('NaN'); // Ok// PHP 8
class Number {
public function __construct(
private int|float $number
) {}
}
new Number('NaN'); // TypeError

PHP 8 Nullsafe Operatörü

Boş kontrol koşulları yerine, artık yeni nullsafe operatörüyle bir çağrı zinciri kullanabilirsiniz. Zincirdeki bir elemanın değerlendirilmesi başarısız olduğunda, tüm zincirin yürütülmesi iptal edilir ve tüm zincir boş olarak değerlendirilir.

// PHP 7
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
// PHP 8
$country = $session?->user?->getAddress()?->country;

PHP 8 Match Expression

Yeni match, geçişe benzer ve aşağıdaki özelliklere sahiptir:

  • Eşleşme bir ifadedir, yani sonucu bir değişkende saklanabilir veya döndürülebilir.
  • Eşleştirme dalları yalnızca tek satırlı ifadeleri destekler ve ara vermeye gerek yoktur.
  • Eşleşme katı karşılaştırmalar yapar.
// PHP 7
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
echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};
//> This is what I expected

Tabi ki, bunlar sadece önemli noktalar. Tüm ayrıntılar için resmi php 8'in dökümantasyonuna bakabilirsiniz.

  Alıntı Yap

KARABAY A, 2020 . Php 8 Yayınlandı,

https://www.karabayyazilim.com/blog/php-8-yayinlandi-2020-11-28-120804

(Erişim Tarihi : 28 Kasım 2020).


  Bu yazıyı paylaş

Yorumlar (0)

Yorum Yap

Abone Ol
Blog yazılarımdan ilk siz haberdar olmak için email bültenine kaydolun