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