Орқага
PDF
Дастурлаш

PHP 8: замонавий PHP’нинг энг муҳим имкониятлари

PHP 8.0 дан 8.4 гача қўшилган, кундалик кодни соддалаштирадиган янгиликлар — мисоллар билан.

PHP 8: замонавий PHP’нинг энг муҳим имкониятлари

PHP узоқ вақт “эски тил” деган тамға билан яшади. Аммо 2020-йил ноябрда чиққан PHP 8.0 ва ундан кейинги версиялар тилни тубдан ўзгартирди: типлар қатъийлашди, синтаксис қисқарди, тезлик ошди. Бу мақолада ҳар бир версиянинг амалиётда энг кўп ишлатиладиган имкониятларини кўриб чиқамиз.

PHP 8.0 — катта бурилиш

8.0 версияси билан тил JIT-компилятор, унион типлар ва атрибутларни олди. Кундалик ишда эса қуйидагилар энг фойдали бўлди:

  • матч ифодаси — switchнинг қатъий ва қиймат қайтарадиган муқобили.
  • Нуллсафе оператори ?-> — занжирдаги null текширувларини қисқартиради.
  • Номли аргументлар — функсияга параметрларни номи билан узатиш.
  • Конструкторда хусусиятларни эълон қилиш (сонструстор пропертй промотион).
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 — энум ва реадонлй

2021-йил ноябрда чиққан 8.1 версияси узоқ кутилган энумларни олиб келди. Энди ҳолатлар рўйхатини оддий сатрлар билан эмас, тип хавфсиз тарзда ифодалаш мумкин. Шу версияда readonly хусусиятлар, never қайтиш типи ва Фиберс ҳам пайдо бўлди.

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

PHP 8.2 ва 8.3

8.2 (2022-йил декабр) readonly класслар ва DNF типларни қўшди, динамик хусусиятларни эса эскирган деб белгилади. 8.3 (2023-йил ноябр) типланган класс константалари, json_validate() функсияси ва #[\Override] атрибутини тақдим этди.

PHP 8.4 — пропертй ҳоокс

2024-йил ноябрда чиққан 8.4 версиясининг энг катта янгилиги — пропертй ҳоокс: геттер ва сеттер мантиқини тўғридан-тўғри хусусият ичида ёзиш имконияти. Шунингдек, асимметрик кўриниш (public private(set)) ва array_find() каби янги массив функсиялари қўшилди.

ВерсияЧиққан вақтиАсосий янгилик
8.02020-йил ноябрматч, JIT, номли аргументлар
8.12021-йил ноябрэнум, реадонлй
8.22022-йил декабрреадонлй класслар
8.32023-йил ноябртипланган константалар
8.42024-йил ноябрпропертй ҳоокс

Хулоса

Агар лойиҳангиз ҳали PHP 7 да ишлаётган бўлса, янгиланиш фақат хавфсизлик эмас, балки қисқароқ ва ишончлироқ код демакдир. Янгилашни тестлар билан, босқичма-босқич амалга оширинг.

PDF Мақолани PDF форматда юклаб олинг Юклаб олиш