PHP 8.2'nin alfa testi başladı

PHP 8.2 programlama dilinin yeni dalının ilk alfa sürümü sunuldu. Yayının 24 Kasım'da yapılması planlanıyor. PHP 8.2'de test edilmeye hazır olan veya uygulanması planlanan ana yenilikler:

  • Örneğin, bir işlevin hata sonlandırma bayrağını veya boş bir değeri döndürmesi için kullanılabilecek ayrı "false" ve "null" türleri eklendi. Önceden, "false" ve "null" yalnızca diğer türlerle birlikte kullanılabiliyordu (örneğin, "string|false"), ancak artık ayrı ayrı kullanılabiliyorlar: function AlwaysFalse(): false { return false; }
  • Bir sınıfı salt okunur olarak işaretleme özelliği eklendi. Bu tür sınıflardaki özellikler yalnızca bir kez ayarlanabilir, sonrasında değiştirilemez. Önceden, bireysel sınıf özellikleri salt okunur olarak işaretlenebiliyordu, ancak artık bu modu tüm sınıf özellikleri için aynı anda etkinleştirebilirsiniz. Sınıf düzeyinde "salt okunur" bayrağının belirtilmesi aynı zamanda özelliklerin sınıfa dinamik olarak eklenmesini de engeller. salt okunur sınıf Gönderi { public function __construct( public string $başlık, public Yazar $yazar, ) {} } $yazı = yeni Gönderi(/* … */); $post->unknown = 'yanlış'; // Hata: Dinamik özellik oluşturulamıyor Post::$unknown
  • Bir sınıfta dinamik olarak özellikler oluşturma yeteneği (yukarıdaki örnekte "post->unknown" gibi) kullanımdan kaldırıldı. PHP 9.0'da, başlangıçta sınıfta tanımlanmayan özelliklere erişim bir hatayla (ErrorException) sonuçlanacaktır. Özellikler oluşturmak için __get ve __set yöntemleri sağlayan sınıflar veya stdClass'ta dinamik özellikler değişiklik yapılmadan çalışmaya devam edecek, geliştiriciyi gizli hatalardan korumak için yalnızca var olmayan özelliklerle örtülü çalışma desteklenecektir. Eski kodun çalışmasını korumak için, dinamik özelliklerin kullanımına izin veren “#[AllowDynamicProperties]” özelliği önerilmiştir.
  • Bir hata sırasında yığın izleme çıkışındaki hassas parametreleri filtreleme yeteneği sağlar. Ortaya çıkan hatalarla ilgili bilgiler, sorunları takip eden ve geliştiricileri bunlar hakkında bilgilendiren üçüncü taraf hizmetlere otomatik olarak gönderildiğinde belirli bilgilerin kesilmesi gerekebilir. Örneğin, kullanıcı adlarını, parolaları ve ortam değişkenlerini içeren parametreleri izlemenin dışında bırakabilirsiniz. function test( $foo, #[\SensitiveParameter] $şifre, $baz ) { throw new Exception('Error'); } test('foo', 'şifre', 'baz'); Önemli hata: Yakalanmayan İstisna: test.php:8'de hata Yığın izleme: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php'ye atıldı 8. hatta
  • "${var}" ve ${(var)} ifadelerini kullanarak değişken değerlerini dizelere yerleştirme özelliği kullanımdan kaldırıldı. Yaygın olarak kullanılan "{$var}" ve "$var" ikamelerine yönelik destek korundu. Örneğin: "Merhaba {$world}"; Tamam "Merhaba $dünya"; Tamam "Merhaba ${world}"; Kullanımdan kaldırıldı: Dizelerde ${} kullanımı artık kullanımdan kaldırıldı
  • "Call_user_func($callable)" yoluyla çağrılabilen ancak "$callable()" biçiminde çağrıyı desteklemeyen, kısmen desteklenen çağrılabilir öğeler kullanımdan kaldırıldı: "self::method" "parent::method" "static" ::method " ["kendi", "yöntem"] ["üst", "yöntem"] ["statik", "yöntem"] ["Foo", "Bar::yöntem"] [yeni Foo, "Bar: :yöntem" ]
  • Yerel ayardan bağımsız büyük/küçük harf dönüşümü uygulandı. strtolower() ve strtoupper() gibi işlevler artık her zaman ASCII aralığındaki karakterlerin büyük/küçük harflerini sanki "C" yerel ayarına ayarlanmış gibi dönüştürüyor.

Kaynak: opennet.ru

Yorum ekle