āĻ¸āĻžāĻŽ 3.12 āĻāĻ° āĻ°āĻŋāĻ˛āĻŋāĻœ, āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ­āĻžāĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ•āĨ¤ PHP 8.0 āĻāĻ° āĻ†āĻ˛āĻĢāĻž āĻ°āĻŋāĻ˛āĻŋāĻœ

āĻ­āĻŋāĻŽāĻŋāĻ“ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻ—ā§€āĻ¤āĻ¸āĻ‚āĻšāĻŋāĻ¤āĻž 3.12, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ•ā§‹āĻĄā§‡ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻāĻŦāĻ‚ āĻ¸ā§‚āĻ•ā§āĻˇā§āĻŽ āĻ‰āĻ­āĻ¯āĻŧ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻ•āĻŋāĻ›ā§ āĻ§āĻ°āĻŖā§‡āĻ° āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻŸāĻŋ āĻ˛āĻŋāĻ—ā§āĻ¯āĻžāĻ¸āĻŋ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĄ āĻ‰āĻ­āĻ¯āĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¯āĻž āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ-āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻļāĻžāĻ–āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ āĻ•ā§‹āĻĄ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻāĻŦāĻ‚ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻŽāĻ†āĻ‡āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡āĨ¤

āĻ—ā§€āĻ¤āĻ¸āĻ‚āĻšāĻŋāĻ¤āĻž āĻ­ā§āĻ˛ āĻŸāĻžāĻ‡āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§‡, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ­ā§āĻ˛. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻŽāĻŋāĻļā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡, āĻ­ā§āĻ˛ āĻ¯ā§ŒāĻ•ā§āĻ¤āĻŋāĻ• āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž (āĻ¯ā§‡āĻŽāĻ¨ "if ($a && $a) {}", "if ($a && !$a) {}" āĻāĻŦāĻ‚ " if ( $a) {} elseif ($a) {}"), āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ā§‡āĻ° āĻ…āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ†āĻ°āĻŽā§āĻ­āĨ¤ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻĨā§āĻ°ā§‡āĻĄā§‡āĻĄ āĻŽā§‹āĻĄā§‡ āĻšāĻ˛ā§‡āĨ¤ āĻ•ā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŽāĻžāĻ¨ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ, āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻļā§‡āĻˇ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ā§‡āĻ° āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻŸā§āĻ˛ āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻŸā§€āĻ•āĻž āĻĄāĻ•āĻŦā§āĻ˛āĻ• (“/** @var āĻŸāĻžāĻ‡āĻĒ */”) āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§€āĻ˛ āĻĒā§āĻ°āĻ•āĻžāĻ°, āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨, āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°, āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡āĨ¤ āĻŸāĻžāĻ‡āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ§āĻ°āĻŖ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ¸āĻžāĻ°ā§āĻŸ āĻ¸ā§āĻŸā§‡āĻŸāĻŽā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ“ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ:

/** @var āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚|āĻ¨āĻžāĻ˛ */
$a = foo();

/** @var āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ $a */
echo strpos($a, 'hello');

/** @psalm-assert-if-true B$a */
āĻĢāĻžāĻ‚āĻļāĻ¨ isValidB(A $a): bool {
B && $a->isValid();
}

āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻŽā§‚āĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, Psalter āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•ā§‹āĻĄ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻŸāĻžāĻ‡āĻĒ āĻŸā§€āĻ•āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻ¨ āĻ•āĻ°ā§āĻ¨ āĻ¯ā§‡āĻŽāĻ¨ āĻ•ā§āĻ˛āĻžāĻ¸āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ• āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ā§‡ āĻ¸āĻ°āĻžāĻ¨ā§‹, āĻ•ā§āĻ˛āĻžāĻ¸āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¸ āĻāĻŦāĻ‚ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĨ¤

āĻ—ā§€āĻ¤āĻ¸āĻ‚āĻšāĻŋāĻ¤āĻž āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¯āĻŧ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ "--taint-analysis" āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ‡āĻ¨āĻĒā§āĻŸ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ• āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, $_GET['name']) āĻāĻŦāĻ‚ āĻ…āĻ•ā§āĻˇāĻ° āĻĒāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻāĻŽāĻ¨ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ‡āĻ•ā§‹" $āĻ¨āĻžāĻŽ "), āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻŽāĻŋāĻĄāĻŋāĻ¯āĻŧā§‡āĻŸ āĻ…ā§āĻ¯āĻžāĻ¸āĻžāĻ‡āĻ¨āĻŽā§‡āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻŸā§āĻ°ā§āĻ¯āĻžāĻ•āĻŋāĻ‚ āĻšā§‡āĻ‡āĻ¨ āĻ¸āĻšāĨ¤ āĻ¸āĻšāĻ¯ā§‹āĻ—ā§€ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ $_GET, $_POST āĻāĻŦāĻ‚ $_COOKIE āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻŦāĻŋāĻĒāĻœā§āĻœāĻ¨āĻ• āĻĄā§‡āĻŸāĻžāĻ° āĻ‰āĻ¤ā§āĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻŋāĻŦā§‡āĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋāĻ“ āĻ¸āĻŽā§āĻ­āĻŦ āĻ¸āĻ‚āĻœā§āĻžāĻž āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸ā§‚āĻ¤ā§āĻ°āĨ¤ āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻāĻ¸ā§āĻ•ā§‡āĻĒāĻŋāĻ‚ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ•āĻŋāĻ‚ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒāĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ¯āĻž HTML āĻ¸āĻžāĻŽāĻ—ā§āĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡, HTTP āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻŦāĻž SQL āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻšāĻžāĻ˛āĻžāĻ¯āĻŧāĨ¤

āĻ‡āĻ•ā§‹, āĻāĻ•ā§āĻ¸ā§‡āĻ•, āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻāĻŦāĻ‚ āĻšā§‡āĻĄāĻžāĻ°ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§ˆāĻ§āĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĄā§‡āĻŸāĻžāĻ° āĻ§āĻ°āĻ¨ āĻ¯ā§‡āĻŽāĻ¨ āĻĒāĻžāĻ ā§āĻ¯, āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻš āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚, āĻāĻ‡āĻšāĻŸāĻŋāĻāĻŽāĻāĻ˛ āĻāĻŦāĻ‚ āĻļā§‡āĻ˛ āĻ•ā§‹āĻĄ, āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¸āĻš āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻžāĻ¯āĻŧ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻŽā§‹āĻĄ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‹āĻĄā§‡āĻ° āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻž āĻ•ā§āĻ°āĻ¸-āĻ¸āĻžāĻ‡āĻŸ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŋāĻ‚ (XSS) āĻŦāĻž SQL āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻŸāĻž āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ 8.0 āĻļāĻžāĻ–āĻžāĻ° āĻ†āĻ˛āĻĢāĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĨ¤ āĻŽā§āĻ•ā§āĻ¤āĻŋ 26 āĻļā§‡ āĻ¨āĻ­ā§‡āĻŽā§āĻŦāĻ° āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¨āĻ¤ā§āĻ¨ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤: āĻ‰āĻĻā§āĻ­āĻžāĻŦāĻ¨, āĻ¯ā§‡āĻŽāĻ¨:

  • āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤āĻŋ JIT āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ°, āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻļā§€āĻ˛āĻ¤āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻšāĻŦā§‡.
  • āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ‡āĻ‰āĻ¨āĻŋāĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻ•āĻžāĻ°, āĻĻā§āĻ‡ āĻŦāĻž āĻ¤āĻ¤ā§‹āĻ§āĻŋāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, "āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ foo(Foo|Bar $input): int|float;")āĨ¤
  • āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ—ā§āĻŖāĻžāĻŦāĻ˛ā§€ (āĻŸā§€āĻ•āĻž) āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ Docblock āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻ•āĻ°ā§‡āĻ‡ āĻ•ā§āĻ˛āĻžāĻ¸ā§‡ āĻŽā§‡āĻŸāĻžāĻĄā§‡āĻŸāĻž (āĻ¯ā§‡āĻŽāĻ¨ āĻ¤āĻĨā§āĻ¯ āĻŸāĻžāĻ‡āĻĒ) āĻ†āĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤
  • āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻŦāĻžāĻ•ā§āĻ¯ āĻ—āĻ āĻ¨ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¸āĻ‚āĻœā§āĻžāĻž, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸāĻ° āĻāĻŦāĻ‚ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ā§‡āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻž āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤
  • āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻžāĻ° - āĻ¸ā§āĻĨāĻŋāĻ°.
  • āĻ¨āĻ¤ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° - āĻŽāĻŋāĻļā§āĻ°, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  • āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡āĨ¤
  • āĻĻā§āĻ°ā§āĻŦāĻ˛āĻŽā§āĻ¯āĻžāĻĒ āĻ†āĻŦāĻ°ā§āĻœāĻ¨āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ‰ā§ŽāĻ¸āĻ°ā§āĻ— āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŽāĻ¨ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž)āĨ¤
  • āĻ¸ā§āĻ¯ā§‹āĻ— āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ "::class" āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ (get_class() āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ)āĨ¤
  • āĻ¸ā§āĻ¯ā§‹āĻ— āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽā§‡āĻ° āĻ•ā§āĻ¯āĻžāĻš āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻž āĻ¯āĻž āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŦāĻĻā§āĻ§ āĻ¨āĻ¯āĻŧāĨ¤
  • āĻ¸ā§āĻ¯ā§‹āĻ— āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°ā§‡āĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻļā§‡āĻˇ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽāĻž āĻ°ā§‡āĻ–ā§‡āĨ¤
  • āĻ¨āĻ¤ā§āĻ¨ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ•ā§‹āĻ¨ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻĒā§āĻ°āĻ•āĻžāĻ° āĻŦāĻž āĻĄā§‡āĻŸāĻž āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ __toString() āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§)āĨ¤
  • āĻ¨āĻ¤ā§āĻ¨ āĻ­āĻŦāĻŋāĻˇā§āĻ¯ā§Ž str_contains(), āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻāĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ strpos-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ°āĻ˛ā§€āĻ•ā§ƒāĻ¤ āĻ…ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻ—, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻāĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻļā§‡āĻˇā§‡ āĻŽāĻŋāĻ˛āĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ str_starts_with() āĻāĻŦāĻ‚ str_ends_with()āĨ¤
  • āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ fdiv(), āĻ¯āĻž āĻļā§‚āĻ¨ā§āĻ¯ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ­āĻžāĻ— āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¨āĻŋāĻ•ā§āĻˇā§‡āĻĒ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻ— āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°ā§‡āĨ¤
  • āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ 'echo "sum:"āĨ¤ $a + $b' āĻ•ā§‡ āĻĒā§‚āĻ°ā§āĻŦā§‡ 'echo ("sum: " . $a) + $b' āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻāĻŦāĻ‚ PHP 8-āĻ 'echo "sum: " āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ§āĻ°āĻž āĻšāĻŦā§‡āĨ¤ ($a + $b)'āĨ¤
  • āĻ†āĻāĻŸāĻ¸āĻžāĻāĻŸ āĻĒāĻžāĻŸāĻŋāĻ—āĻŖāĻŋāĻ¤ āĻāĻŦāĻ‚ āĻŦāĻŋāĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, "[] % [42]" āĻāĻŦāĻ‚ "$object + 4" āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ° āĻĢāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻŦā§‡āĨ¤
  • āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ…āĻ­āĻŋāĻ¨ā§āĻ¨ āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ•ā§āĻ°āĻŽ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ°āĻžāĻ¨ āĻœā§āĻĄāĻŧā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨