Orqaga
PDF
Dasturlash

PHP 8: zamonaviy PHP’ning eng muhim imkoniyatlari

PHP 8.0 dan 8.4 gacha qo‘shilgan, kundalik kodni soddalashtiradigan yangiliklar — misollar bilan.

PHP 8: zamonaviy PHP’ning eng muhim imkoniyatlari

PHP uzoq vaqt “eski til” degan tamg‘a bilan yashadi. Ammo 2020-yil noyabrda chiqqan PHP 8.0 va undan keyingi versiyalar tilni tubdan o‘zgartirdi: tiplar qat’iylashdi, sintaksis qisqardi, tezlik oshdi. Bu maqolada har bir versiyaning amaliyotda eng ko‘p ishlatiladigan imkoniyatlarini ko‘rib chiqamiz.

PHP 8.0 — katta burilish

8.0 versiyasi bilan til JIT-kompilyator, union tiplar va atributlarni oldi. Kundalik ishda esa quyidagilar eng foydali bo‘ldi:

  • match ifodasi — switchning qat’iy va qiymat qaytaradigan muqobili.
  • Nullsafe operatori ?-> — zanjirdagi null tekshiruvlarini qisqartiradi.
  • Nomli argumentlar — funksiyaga parametrlarni nomi bilan uzatish.
  • Konstruktorda xususiyatlarni e’lon qilish (constructor property promotion).
final class User
{
    public function __construct(
        public readonly int $id,
        public string $name,
    ) {}
}

$status = match ($code) {
    200 => 'OK',
    404 => 'Topilmadi',
    default => 'Noma’lum',
};

PHP 8.1 — enum va readonly

2021-yil noyabrda chiqqan 8.1 versiyasi uzoq kutilgan enumlarni olib keldi. Endi holatlar ro‘yxatini oddiy satrlar bilan emas, tip xavfsiz tarzda ifodalash mumkin. Shu versiyada readonly xususiyatlar, never qaytish tipi va Fibers ham paydo bo‘ldi.

enum Status: string
{
    case Draft = 'draft';
    case Published = 'published';
}

PHP 8.2 va 8.3

8.2 (2022-yil dekabr) readonly klasslar va DNF tiplarni qo‘shdi, dinamik xususiyatlarni esa eskirgan deb belgiladi. 8.3 (2023-yil noyabr) tiplangan klass konstantalari, json_validate() funksiyasi va #[\Override] atributini taqdim etdi.

PHP 8.4 — property hooks

2024-yil noyabrda chiqqan 8.4 versiyasining eng katta yangiligi — property hooks: getter va setter mantiqini to‘g‘ridan-to‘g‘ri xususiyat ichida yozish imkoniyati. Shuningdek, asimmetrik ko‘rinish (public private(set)) va array_find() kabi yangi massiv funksiyalari qo‘shildi.

VersiyaChiqqan vaqtiAsosiy yangilik
8.02020-yil noyabrmatch, JIT, nomli argumentlar
8.12021-yil noyabrenum, readonly
8.22022-yil dekabrreadonly klasslar
8.32023-yil noyabrtiplangan konstantalar
8.42024-yil noyabrproperty hooks

Xulosa

Agar loyihangiz hali PHP 7 da ishlayotgan bo‘lsa, yangilanish faqat xavfsizlik emas, balki qisqaroq va ishonchliroq kod demakdir. Yangilashni testlar bilan, bosqichma-bosqich amalga oshiring.

PDF Maqolani PDF formatda yuklab oling Yuklab olish