PHP 8.2 рдХрд╛ рдЕрд▓реНрдлрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ

PHP 8.2 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рдирдИ рд╢рд╛рдЦрд╛ рдХреА рдкрд╣рд▓реА рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИред рд░рд┐рд▓реАрдЬрд╝ 24 рдирд╡рдВрдмрд░ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред PHP 8.2 рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдирд┐рдпреЛрдЬрд┐рдд рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░:

  • рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ "рдЧрд▓рдд" рдФрд░ "рд╢реВрдиреНрдп" рдЬреЛрдбрд╝реЗ рдЧрдП, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдорд╛рдкреНрддрд┐ рдзреНрд╡рдЬ рдпрд╛ рдЦрд╛рд▓реА рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ, "рдЧрд▓рдд" рдФрд░ "рд╢реВрдиреНрдп" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╕реНрдЯреНрд░рд┐рдВрдЧ|рдЭреВрдард╛"), рд▓реЗрдХрд┐рди рдЕрдм рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рдЧрд▓рдд(): рдЧрд▓рдд { рд╡рд╛рдкрд╕реА рдЧрд▓рдд; }
  • рдХрд┐рд╕реА рдХрдХреНрд╖рд╛ рдХреЛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЧрдИред рдРрд╕реЗ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЧреБрдг рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдкрд╣рд▓реЗ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрдЧ рд╕реНрддрд░ рдкрд░ "рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП" рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреА рдЧреБрдгреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рд░реАрдбрдУрдирд▓реА рдХреНрд▓рд╛рд╕ рдкреЛрд╕реНрдЯ { рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди __ рдирд┐рд░реНрдорд╛рдг ( рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рд╢реАрд░реНрд╖рдХ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓реЗрдЦрдХ $ рд▓реЗрдЦрдХ, ) { } } $ рдкреЛрд╕реНрдЯ = рдирдпрд╛ рдкреЛрд╕реНрдЯ (/* тАж */); $рдкреЛрд╕реНрдЯ->рдЕрдЬреНрдЮрд╛рдд = 'рдЧрд▓рдд'; // рддреНрд░реБрдЯрд┐: рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рдкреЛрд╕реНрдЯ::$рдЕрдЬреНрдЮрд╛рдд
  • рдХрд┐рд╕реА рд╡рд░реНрдЧ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЧреБрдг рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдЬреИрд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ "рдкреЛрд╕реНрдЯ->рдЕрдЬреНрдЮрд╛рдд") рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред PHP 9.0 рдореЗрдВ, рдЙрди рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ (ErrorException) рд╣реЛрдЧреАред рд╡реЗ рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рдЧреБрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП __get рдФрд░ __set рд╡рд┐рдзрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ, рдпрд╛ stdClass рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдЧреБрдг рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреА, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЫрд┐рдкреЗ рд╣реБрдП рдмрдЧ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЧреИрд░-рдореМрдЬреВрдж рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдп рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "#[AllowDynamicProperties]" рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ, рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рдЧреБрдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
  • рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рджреМрд░рд╛рди рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХрд╛рдЯрдирд╛ рддрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреА рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрди рдкреИрд░рд╛рдореАрдЯрд░реЛрдВ рдХреЛ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг ($foo, #[\SensitiveParameter] $password, $baz ) {рдирдпрд╛ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХреЗрдВ('рддреНрд░реБрдЯрд┐'); } рдкрд░реАрдХреНрд╖рдг('рдлреВ', 'рдкрд╛рд╕рд╡рд░реНрдб', 'рдмрд╛рдЬрд╝'); рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐: рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ рдЕрдкрд╡рд╛рдж: test.php:8 рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕: тАЛтАЛ#0 test.php(11): test('foo', рдСрдмреНрдЬреЗрдХреНрдЯ(SensitiveParameterValue), 'baz') #1 {main} test.php рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд▓рд╛рдЗрди 8 рдкрд░
  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "${var}" рдФрд░ ${(var)} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░ рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ "{$var}" рдФрд░ "$var" рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдмрд░рдХрд░рд╛рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: "рд╣реИрд▓реЛ {$рджреБрдирд┐рдпрд╛}"; рдареАрдХ рд╣реИ "рд╣реИрд▓реЛ $рджреБрдирд┐рдпрд╛"; рдареАрдХ рд╣реИ "рд╣реИрд▓реЛ ${рджреБрдирд┐рдпрд╛}"; рдЕрд╕реНрд╡реАрдХреГрдд: рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ ${} рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдХреЙрд▓реЗрдмрд▓реНрд╕ рдЬрд┐рдиреНрд╣реЗрдВ "call_user_func($callable)" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди "$callable()" рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: "self::method" "parent::method" "static" ::method "["рд╕реНрд╡рдпрдВ", "рд╡рд┐рдзрд┐"] ["рдкреИрд░реЗрдВрдЯ", "рд╡рд┐рдзрд┐"] ["рд╕реНрдереИрддрд┐рдХ", "рд╡рд┐рдзрд┐"] ["рдлреВ", "рдмрд╛рд░::рд╡рд┐рдзрд┐"] [рдирдпрд╛ рдлреВ, "рдмрд╛рд░: :рд╡рд┐рдзрд┐" ]
  • рд╕реНрдерд╛рдиреАрдп-рд╕реНрд╡рддрдВрддреНрд░ рдХреЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред strtolower() рдФрд░ strtoupper() рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдм рд╣рдореЗрд╢рд╛ ASCII рд░реЗрдВрдЬ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ "C" рд▓реЛрдХреЗрд▓ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ