เบเบฒเบ™เบ›เปˆเบญเบเป€เบžเบ‡เบชเบฑเบ™เบฅเบฐเป€เบชเบตเบ™ 3.12, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ PHP. เบเบฒเบ™เบ›เปˆเบญเบ Alpha เบ‚เบญเบ‡ PHP 8.0

เบšเปเบฅเบดเบชเบฑเบ” Vimeo เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบฅเบธเป‰เบ™เปƒเปเปˆเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ” เป€เบžเบ‡เบชเบฑเบ™เบฅเบฐเป€เบชเบตเบ™ 3.12, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐ subtle เปƒเบ™เบฅเบฐเบซเบฑเบ” PHP, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบ—เบฑเบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”เบกเปเบฅเบฐเบ”เบปเบเปเบฅเบฐเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡ PHP. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ PHP เปเบฅเบฐ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

Psalm เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เปˆเบฒเบ‡เป† เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ›เบปเบเบเบฐเบ•เบด. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เปเบฒเป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ•เบปเบงเปเบ›เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ (เป€เบŠเบฑเปˆเบ™: "เบ–เป‰เบฒ ($a && $a) {}", "เบ–เป‰เบฒ ($a && !$a) {}" เปเบฅเบฐ " if ($a) {} elseif ($a) {}"), เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเปเปˆเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบงเบฑเบ”เบ–เบธ. เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเปเบฅเปˆเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบซเบผเบฒเบเบเบฐเบ—เบนเป‰. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเปเบเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เป€เบŠเบดเปˆเบ‡เบงเบดเป€เบ„เบฒเบฐเบžเบฝเบ‡เปเบ•เปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบชเบฐเปเบเบ™เบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบ›เบญเบ”เป„เบžเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ เปƒเบŠเป‰ เบ„เปเบฒโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹ Docblock (โ€œ/** @var Type */โ€) เป€เบžเบทเปˆเบญเบชเบฐเปœเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ•เบปเบงเปเบ›, เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™, เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™, เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบงเบฑเบ”เบ–เบธ. เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

/** @var string|null */
$a = foo();

/** @var string $a */
echo strpos($a, 'เบชเบฐเบšเบฒเบเบ”เบต');

/** @psalm-assert-if-true B$a */
เบŸเบฑเบ‡เบŠเบฑเบ™ isValidB(A $a): bool {
เบเบฑเบšเบ„เบทเบ™ $a เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ B && $a->isValid();
}

เป€เบžเบทเปˆเบญเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฒเบ™เบฅเบปเบšเบฅเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™, Psalter utility เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ plugins เปเบฅเบฐ. เบญเบฐเบ™เบธเบเบฒเบ” เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบฅเบฐเบซเบฑเบ”เบ—เบปเปˆเบงเป„เบ›, เป€เบžเบตเปˆเบกเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”, เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบซเป‰เบญเบ‡เบฎเบฝเบ™เบˆเบฒเบ namespace เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบญเบทเปˆเบ™, เบงเบดเบ—เบตเบเบฒเบ™เบเป‰เบฒเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™, เปเบฅเบฐเบ›เปˆเบฝเบ™เบŠเบทเปˆเบซเป‰เบญเบ‡เบฎเบฝเบ™เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™.

เปƒเบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡เบ„เปเบฒเป€เบžเบ‡ เบ›เบฐเบ•เบดเบšเบฑเบ” เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "--taint-analysis" เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰ (เบ•เบปเบงเบขเปˆเบฒเบ‡: $_GET['name']) เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, echo ". $name "), เบฅเบงเบกเบ—เบฑเบ‡เป‚เบ”เบเบœเปˆเบฒเบ™เบฅเบฐเบšเบปเบšเบ•เปˆเบญเบ‡เป‚เบชเป‰เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เปเบฅเบฐเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ arrays เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡ $_GET, $_POST เปเบฅเบฐ $_COOKIE เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰ เบ™เบดเบเบฒเบก เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบฅเบงเบกเป€เบ–เบดเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ HTML, เป€เบžเบตเปˆเบกเบชเปˆเบงเบ™เบซเบปเบง HTTP, เบซเบผเบทเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก SQL.

เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ–เบทเบเปƒเบŠเป‰เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบŠเบฑเปˆเบ™ echo, exec, include เปเบฅเบฐ header. เป€เบกเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบต, เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบฑเปˆเบ™: เบ‚เปเป‰เบ„เบงเบฒเบก, strings เบ—เบตเปˆเบกเบต SQL, HTML เปเบฅเบฐเบฅเบฐเบซเบฑเบ” Shell, เบชเบฐเบ•เบดเบ‡เบ—เบตเปˆเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ. เป‚เบซเบกเบ”เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เบญเปˆเบญเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเบฐเบ„เบดเบšเบ‚เป‰เบฒเบกเป€เบงเบฑเบšเป„เบŠเบ—เปŒ (XSS) เบซเบผเบทเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ SQL.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป„เบ”เป‰ เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš alpha เบ‚เบญเบ‡เบชเบฒเบ‚เบฒ PHP 8.0 เปƒเบซเบกเปˆ. เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ™เบ—เบต 26 เบžเบฐเบˆเบดเบ. เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบชเบฒเบ‚เบฒเปƒเปเปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบ„เบท:

  • เบฅเบงเบก JIT compiler, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ›เบฐเป€เบžเบ”เบชเบฐเบซเบฐเบžเบฑเบ™, เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เปเป€เบฅเบฑเบเบŠเบฑเบ™เบ‚เบญเบ‡เบชเบญเบ‡เบ›เบฐเป€เบžเบ” เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, โ€œfoo foo(Foo|Bar $input): int|float;โ€).
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ (เบ„เปเบฒเบšเบฑเบ™เบเบฒเบ) เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเบนเบเบกเบฑเบ” metadata (เป€เบŠเบฑเปˆเบ™: เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”) เบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Docblock syntax.
  • เบซเบเปเป‰ syntax เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบŠเบฑเป‰เบ™, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเบกเบ—เบปเบšเบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบ•เบปเบงเบชเป‰เบฒเบ‡เปเบฅเบฐเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”.
  • เบ›เบฐเป€เบžเบ”เบ„เบทเบ™เปƒเบซเบกเปˆ - เป„เบŸเบŸเป‰เบฒเบชเบฐเบ–เบดเบ”.
  • เบ›เบฐโ€‹เป€เบžเบ”โ€‹เปƒเบซเบกเปˆ - เบ›เบฐเบชเบปเบก, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†.
  • เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ เบ–เบดเป‰เบก เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™.
  • WeakMap เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบชเบเบชเบฐเบฅเบฐเป„เบ”เป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™).
  • เป‚เบญเบเบฒเบ” เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš "::classโ€‹" เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบงเบฑเบ”โ€‹เบ–เบธ (เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบšโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบญเบตเป‰เบ™ get_class()โ€‹)โ€‹.
  • เป‚เบญเบเบฒเบ” เบ„เปเบฒเบ™เบดเบเบฒเบกเปƒเบ™เบ•เบฑเบ™เบˆเบฑเบšเบ‚เบญเบ‡เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ•เบปเบงเปเบ›.
  • เป‚เบญเบเบฒเบ” เบญเบญเบเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบฅเบฒเบเบเบฒเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™.
  • เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบซเบกเปˆ เบชเบฒเบกเบฒเบ”เปƒเบชเปˆเบชเบฒเบเป„เบ”เป‰ เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เบชเบฐเบ•เบฃเบดเบ‡ เบซเบผเบทเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡ (เป€เบŠเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™ __toString() เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰).
  • เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆ str_contains(), เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡ strpos เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบชเบฒเบเบเปˆเบญเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ str_starts_with() เปเบฅเบฐ str_ends_with() เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เปเบฅเบฐเบ—เป‰เบฒเบเบ‚เบญเบ‡ string.
  • เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” fdiv(), เป€เบŠเบดเปˆเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ–เบดเป‰เบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปเบšเปˆเบ‡เบ”เป‰เบงเบเบชเบนเบ™.
  • เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบชเบฐเบ•เบดเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเป€เบซเบ”เบœเบปเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ 'echo "sum:". $a + $b' เป„เบ”เป‰เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบงเปˆเบฒ 'echo ("sum: ". $a) + $b', เปเบฅเบฐเปƒเบ™ PHP 8 เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™ 'echo "sum:" . ($a + $b)'.
  • เป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ” เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบฅเบเบ„เบฐเบ™เบดเบ”เปเบฅเบฐเบšเบดเบ”, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ "[] % [42]" เปเบฅเบฐ "$object + 4" เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
  • เบ›เบฐเบ•เบดเบšเบฑเบ” เบชเบนเบ”เบเบฒเบ™เบฎเบฝเบ‡เบฅเบณเบ”เบฑเบšเบ—เบตเปˆเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบฅเบณเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ„เบทเบเบฑเบ™เบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ—เบปเปˆเบงเป„เบฅเบเบฐเบ•เปˆเบฒเบ‡เป†.

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

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