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
?->— zanjirdaginulltekshiruvlarini 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.
| Versiya | Chiqqan vaqti | Asosiy yangilik |
|---|---|---|
| 8.0 | 2020-yil noyabr | match, JIT, nomli argumentlar |
| 8.1 | 2021-yil noyabr | enum, readonly |
| 8.2 | 2022-yil dekabr | readonly klasslar |
| 8.3 | 2023-yil noyabr | tiplangan konstantalar |
| 8.4 | 2024-yil noyabr | property 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.