PHP 8'in beta testi başladı

tanıtıldı первый бета-выпуск новой ветки языка программирования PHP 8. Релиз намечен на 26 ноября. Одновременно сформированы корректирующие выпуски PHP 7.4.9, 7.3.21 и
7.2.33, в которых устранены накопившиеся ошибки и уязвимости.

Ana yenilikler PHP8:

  • içerme JIT derleyicisikullanımı üretkenliği artıracaktır.
  • Destek именованных аргументов функций, позволяющих передававать в функцию значения в привязке к именам, т.е. можно передавать аргументы в произвольном порядке и определять необязательные аргументы. Например, «array_fill(start_index: 0, num: 100, value: 50)».
  • При вызове методов izin применение оператора «?», который позволяет инициировать вызов только, если метод присутствует, что позволяет избежать лишних проверок на возврат значения «null». Например, «$dateAsString = $booking->getStartDate()?->asDateTimeString()»;
  • Destek birlik türleri, iki veya daha fazla türden koleksiyonları tanımlamak (örneğin, "public function foo(Foo|Bar $input): int|float;").
  • Destek Öznitellikler (ek açıklamalar), Docblock sözdizimini kullanmadan meta verileri (tür bilgileri gibi) sınıflara bağlamanıza olanak tanır.
  • Поддержка выражений maç, которые в отличие от switch могут возвращать значения, поддерживают комбинирование условий, используют строгое сравнение типов и не требуют указания «break».

    $result = match($input) {
    0 => «hello»,
    ‘1’, ‘2’, ‘3’ => «world»,
    };

  • Kısaltılmış sözdizimi sınıf tanımları, bir yapıcının tanımını ve özelliklerini birleştirmenize olanak tanır.
  • Yeni dönüş türü - statik.
  • Yeni tip - karışıkBir işlevin farklı türdeki parametreleri kabul edip etmediğini belirlemek için kullanılabilir.
  • ifade atmak istisnaları ele almak için.
  • Zayıf Harita çöp toplama sırasında feda edilebilecek nesneler oluşturmak (örneğin, gereksiz önbellekleri depolamak için).
  • Fırsat nesneler için “::class” ifadesini kullanma (get_class() işlevini çağırmaya benzer).
  • Fırsat değişkenlere bağlı olmayan istisnaların catch bloğundaki tanımlar.
  • Fırsat işlev parametreleri listesindeki son öğeden sonra virgül bırakılır.
  • Yeni интерфейс dizilebilir dizeye dönüştürülebilecek herhangi bir dize türünü veya veriyi tanımlamak için (bunun için __toString() yöntemi kullanılabilir).
  • Yeni özellik str_contains(), bir alt dizenin oluşumunu belirlemek için strpos'un basitleştirilmiş bir analoğu ve ayrıca bir dizenin başındaki ve sonundaki eşleşmeleri kontrol etmek için str_starts_with() ve str_ends_with() işlevleri.
  • Eklenen işlev fdiv()Sıfıra bölme işleminde hata vermeden bölme işlemini gerçekleştiren.
  • Değiştirildi dize birleştirme mantığı. Örneğin, 'echo "sum:" ifadesi. $a + $b' daha önce 'echo ("sum: " . $a) + $b' olarak yorumlanıyordu ve PHP 8'de 'echo "sum: " olarak ele alınacak. ($a + $b)'.
  • Sıkılmış aritmetik ve bit işlemlerini kontrol etmek, örneğin "[] ​​% [42]" ve "$object + 4" ifadeleri hatayla sonuçlanacaktır.
  • uygulandı Farklı çalışmalarda aynı değerlerin sırasının korunduğu kararlı bir sıralama algoritması.
  • Kaynak: opennet.ru

Yorum ekle