เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เบฃเปเบเบฃเบกเบžเบฒเบชเบฒ PHP 7.4

เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ เบ™เบณ เบชเบฐ เป€เปœเบต เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เบฅเปเบเบฅเบกเบžเบฒเบชเบฒ PHP 7.4. เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเบ›เบฐเบเบญเบšเบกเบตเบŠเบธเบ”เบ‚เบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ—เปเบฒเบฅเบฒเบเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰.

เบเบฐเปเบˆ เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ เปƒเบ™ PHP 7.4:

  • เบžเบดเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” - เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เบŠเบฑเป‰เบ™โ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบกเบตโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ›เบฐโ€‹เบเบฒเบ”โ€‹, เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹:

    เบœเบนเป‰เปƒเบŠเป‰เบŠเบฑเป‰เบ™เบฎเบฝเบ™ {
    public int $id;
    เบชเบฐเบ•เบฃเบดเบ‡เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ $name;
    }

  • เบซเบเปเป‰ syntax เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ "fn(parameter_list) => expr" เบ—เบตเปˆเบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบœเบนเบเบกเบฑเบ”เป‚เบ”เบเบกเบนเบ™เบ„เปˆเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, โ€œfn($x) => $x + $yโ€ เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš โ€œ$fn2 = function ($x) use ($y) {return $x + $y;}โ€);
  • เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบกเบญเบšเปเบฒเบเปเบšเบšเบซเบเปเป‰ "??=" เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ ("a ??= b" เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš "a = a ?? b", เบ–เป‰เบฒ "a" เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰, เปเบฅเบฐเบ–เป‰เบฒเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบกเบฑเบ™. เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบ„เปˆเบฒ "b" );
  • เบˆเบณเบเบฑเบ” เป‚เบญเบเบฒเบ” เบฎเบฑเบเบชเบฒเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบเบฒเบ™เบชเบทเบšเบ—เบญเบ”เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™เบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เบ—เบตเปˆเบกเบฒเบˆเบฒเบ, เบซเบผเบทเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เบตเป‰เบ™เบเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปƒเบ™เบ›เบฐเป€เบžเบ”เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเป„เบ”เป‰เบกเบฒ (เบ„เบงเบฒเบกโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡ เบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™ เปเบฅเบฐ เบ›เบฐเป€เบžเบ”เบเบฒเบ™เป‚เบ•เป‰เปเบเป‰เบ‡เบเบฑเบ™). เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ PHP:

    เบŠเบฑเป‰เบ™ A {}
    เบŠเบฑเป‰เบ™ B เบ‚เบฐเบซเบเบฒเบ A {}

    เบœเบนเป‰เบœเบฐเบฅเบดเบ”เบฅเบฐเบ”เบฑเบš {
    public function method(): A {}
    }
    เบซเป‰เบญเบ‡เบฎเบฝเบ™ ChildProducer เบ‚เบฐเบซเบเบฒเบเบœเบนเป‰เบœเบฐเบฅเบดเบ” {
    public function method(): B {}
    }

  • เบเบณเบฅเบฑเบ‡เป€เบ›เบตเบ”เป‚เบ•เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เบžเบฒเบเปƒเบ™ array โ€œโ€ฆ$varโ€, เบญเบฐเบ™เบธเบเบฒเบ” เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ‚เบญเบ‡ array เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ” array เปƒเบซเบกเปˆ;

    $parts = ['apple', 'pear'];
    $fruits = ['เบเป‰เบงเบ', 'เบชเบปเป‰เบก', โ€ฆ$parts, 'เปเบฒเบเป‚เบก'];
    // ['เบเป‰เบงเบ', 'เบชเบปเป‰เบก', 'เบซเบกเบฒเบเป‚เบ›เบก', 'pear', 'เบซเบกเบฒเบเป‚เบก'];

  • เป‚เบญเบเบฒเบ” เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบžเบฒเบšเบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบกเบตเบ•เบปเบงเบ‚เบฑเป‰เบ™เปƒเบ™เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเบ•เบปเบงเป€เบฅเบ (1_000_000_00);
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญ, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เป€เบ–เบดเบ‡เบงเบฑเบ”เบ–เบธเปƒเบ”เบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเบšเปเปˆเบชเบฐเบเบฑเบ”เบœเบนเป‰เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบˆเบฒเบเบเบฒเบ™เบฅเบถเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡;
  • เปƒเปเปˆ เบเบปเบ™เป„เบ object serialization (เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡ Serializable เปเบฅเบฐ __sleep()/__wakeup()), เป€เบŠเบดเปˆเบ‡เบ›เปˆเบฝเบ™เปเบ—เบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš Serializable, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ–เบทเบเบเบปเบเป€เบฅเบตเบ;

    // เบชเบปเปˆเบ‡เบ„เบทเบ™ array เบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ;
    เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ __serialize(): array;

    // เบŸเบทเป‰เบ™เบŸเบนเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบˆเบฒเบเบญเบฒเป€เบฃ
    เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ __unserialize(array $data): void;

  • เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ–เบดเป‰เบกเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™ __toString();
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบชเบณเบฅเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เปเบ„เบ”เบฅเบฐเบซเบฑเบ”เบงเบฑเบ”เบ–เบธเป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒ. เป€เบžเบตเปˆเบกเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ
    opcache.preload, เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ” script PHP เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. script เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ” opcode เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบญเบทเปˆเบ™เป†เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบฅเบงเบกเป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบซเบผเบทเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ opcache_compile_file();

  • เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™ crc32c เปƒเบชเปˆเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ Hash เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆ checksums เป‚เบ”เบเปƒเบŠเป‰ Castagnoli polynomial;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡ password_hash() เบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ hashing argon2i เปเบฅเบฐ argin2id, เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” Sodium, เบ–เป‰เบฒ PHP เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ libargon;
  • เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™ mb_str_split(), เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš str_split(), เปเบ•เปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเป„เบ”เป‰เบ”เป‰เบงเบเป„เบšเบ•เปŒ เปเบ•เปˆเบกเบตเบ•เบณเปเปœเปˆเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡เบซเบผเบฒเบเป„เบšเบ•เปŒ;
  • เบŸเบฑเบ‡เบŠเบฑเบ™ strip_tags() เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆ array เบ—เบตเปˆเบกเบตเบŠเบทเปˆ tag, i.e. เปเบ—เบ™ strip_tags($str, ' ') เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธ strip_tags($str, ['a', 'p']);
  • proc_open() เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ operands เป„เบ”เป‰เบ–เบทเบ enumerated เปƒเบ™ array เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ string เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, เปเบฅเบฐเบกเบฑเบ™เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ thread เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ descriptor เป„เบŸเบฅเปŒ null;

    proc_open(['php', '-r', 'echo "เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบ\n";'], $descriptors, $pipes);

    // เบกเบฑเบ 2>&1 เปƒเบ™ shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // เป€เบŠเบฑเปˆเบ™ 2>/dev/null เบซเบผเบท 2>nul เปƒเบ™ shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode เปเบฅเบฐเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ WDDX เปเบกเปˆเบ™เบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เปเบˆเบเบขเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™. เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบ–เบทเบเปเบˆเบเบขเบฒเบเบœเปˆเบฒเบ™ PECL;
  • เป‚เบญเบ™เป„เบ›เบ›เบฐเป€เบžเบ” เบฅเป‰เบฒเบชเบฐเป„เบซเบก เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบŠเบฑเปˆเบ™: เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ ternary nested เป‚เบ”เบเบšเปเปˆเบกเบตเบงเบปเบ‡เป€เบฅเบฑเบš, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš array เปเบฅเบฐ strings เป‚เบ”เบเปƒเบŠเป‰ curly braces (โ€œ$var{$idx}โ€), เบŸเบฑเบ‡เบŠเบฑเบ™ is_real() เปเบฅเบฐเบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เปƒเบซเป‰เป€เบ›เบฑเบ™เบˆเบดเบ‡, เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เปเบกเปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบŠเบฑเป‰เบ™เปเบกเปˆ, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต allow_url_เบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ , เป‚เบ”เบเปƒเบŠเป‰ array_key_exists() เปƒเบ™เบงเบฑเบ”เบ–เบธ.

    เบŸเบฑเบ‡เบŠเบฑเบ™ get_magic_quotes_gpc(), get_magic_quotes_runtime(), เปเบฅเบฐ
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    เบเบฒเบ™เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบกเป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ.
    base_convert(), bindec(), octdec() เปเบฅเบฐ hexdec(), เปเบฅเบฐเป€เบกเบทเปˆเบญเบเบณเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบ•เบฃเบดเบ‡เปƒเบ™ mb_ereg_replace().

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™