рдкреАрдПрдЪрдкреА 8.1 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ

рдПрдХ рд╕рд╛рд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рдж, PHP 8.1 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИред рдирдИ рд╢рд╛рдЦрд╛ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдмрджрд▓рд╛рд╡ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

PHP 8.1 рдореЗрдВ рдкреНрд░рдореБрдЦ рд╕реБрдзрд╛рд░:

  • рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдирдо рд╕реНрдерд┐рддрд┐ { рдорд╛рдорд▓рд╛ рд▓рдВрдмрд┐рдд; рдорд╛рдорд▓рд╛ рд╕рдХреНрд░рд┐рдп; рдорд╛рдорд▓рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд; } рдХреНрд▓рд╛рд╕ рдкреЛрд╕реНрдЯ { рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди __construct( рдирд┐рдЬреА рд╕реНрдерд┐рддрд┐ $status = рд╕реНрдерд┐рддрд┐::рд▓рдВрдмрд┐рдд; ) {} рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯрд╕реНрдЯреИрдЯрд╕(рд╕реНрдерд┐рддрд┐ $рд╕реНрдерд┐рддрд┐): рд╢реВрдиреНрдп { // тАж } } $рдкреЛрд╕реНрдЯ->рд╕реЗрдЯрд╕реНрдЯреИрдЯрд╕(рд╕реНрдерд┐рддрд┐::рд╕рдХреНрд░рд┐рдп);
  • рдлрд╝рд╛рдЗрдмрд░ рдирд╛рдордХ рд╣рд▓реНрдХреЗ рдзрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдзрд╛рдЧреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд╛рдЗрдмрд░ рд╕рдкреЛрд░реНрдЯ рдХреЛ Amphp рдФрд░ ReactPHP рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред $рдлрд╛рдЗрдмрд░ = рдирдпрд╛ рдлрд╛рдЗрдмрд░(рдлрд╝рдВрдХреНрд╢рди()): рд╢реВрдиреНрдп { $valueAfterResuming = рдлрд╛рдЗрдмрд░::рд╕рд╕реНрдкреЗрдВрдб('рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж'); // ... }); $valueAfterSuspending = $рдлрд╛рдЗрдмрд░->рдкреНрд░рд╛рд░рдВрдн(); $рдлрд╛рдЗрдмрд░->рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ ('рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж');
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреИрд╢ (opcache) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рд╕ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдиреЗ рдХреБрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ 5-8% рддрдХ рдмрдврд╝рд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ред рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдореЗрдВ JIT рдСрдкрд░реЗрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди, ARM64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (AArch64) рдХреЗ рд▓рд┐рдП JIT рд╕рдорд░реНрдерди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдирд╛рдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рддреНрд╡рд░рдг, рдЯрд╛рдЗрдорд▓рд┐рдм рдФрд░ рдПрдХреНрд╕рдЯ/рдбреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЕрдиреБрдХреВрд▓рди, рдХреНрд░рдордмрджреНрдзрддрд╛ рдФрд░ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐, get_declared_classes() рдХрд╛ рдЕрдиреБрдХреВрд▓рди, рд╡рд┐рд╕реНрдлреЛрдЯ() рд╢рд╛рдорд┐рд▓ рд╣реИрдВред , strtr() рдлрд╝рдВрдХреНрд╢рди, strnatcmp(), dechex()ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд┐рдореНрдлрдиреА рдбреЗрдореЛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 23.0% рдФрд░ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП 3.5% рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред
  • рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЕрдирдкреИрдХрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ "...$var", рдЬреЛ рдПрдХ рдирдИ рд╕рд░рдгреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдореМрдЬреВрджрд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рдбрд┐рдЬрд┐рдЯрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕рдорд░реНрдерд┐рдд рдереЗ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдк рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: $array1 = ["a" => 1]; $array2 = ["рдмреА" => 2]; $array = ["a" => 0, ...$array1, ...$array2]; var_dump($рд╕рд░рдгреА); // ["рдП" => 1, "рдмреА" => 2]
  • рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░реНрд╕ рдореЗрдВ "рдирдП" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рддрд░реНрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВред рд╡рд░реНрдЧ MyController {рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди __construct(рдирд┐рдЬреА рд▓реЙрдЧрд░ $logger = рдирдпрд╛ NullLogger(), ) { } }
  • рдХреЗрд╡рд▓-рдкрдарди рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдРрд╕реЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧреА)ред рдХреНрд▓рд╛рд╕ рдкреЛрд╕реНрдЯрдбреЗрдЯрд╛ {рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди __construct(рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ $рд╢реАрд░реНрд╖рдХ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп DateTimeImmutable $рджрд┐рдирд╛рдВрдХ, ) {} } $рдкреЛрд╕реНрдЯ = рдирдпрд╛ рдкреЛрд╕реНрдЯ('рд╢реАрд░реНрд╖рдХ', /* тАж */); $рдкреЛрд╕реНрдЯ->рд╢реАрд░реНрд╖рдХ = 'рдЕрдиреНрдп'; > рддреНрд░реБрдЯрд┐: рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╕рдВрдкрддреНрддрд┐ рдкреЛрд╕реНрдЯ::$рд╢реАрд░реНрд╖рдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
  • рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ "..." рдорд╛рди рдкрд╛рд╕ рдХрд░рдХреЗ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╛рдиреА Closure::fromCallable('myFunc) рдХреЗ рдмрдЬрд╛рдп myFunc(...) ')): рдлрд╝рдВрдХреНрд╢рди рдлреВ (int $a, int $b) { /* тАж */ } $foo = foo(тАж); $foo(рдП: 1, рдмреА: 2);
  • рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдирдП рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпреВрдирд┐рдпрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╕реВрдЪреАрдмрджреНрдз рдкреНрд░рдХрд╛рд░ рдХреА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реЗрдЯ рдореЗрдВ рд╕рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлрд╝рдВрдХреНрд╢рди generateSlug(HasTitle&HasId $post) { return strtolower($post->getTitle()) ред $рдкреЛрд╕реНрдЯ->getId(); }
  • рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ "рдХрднреА рдирд╣реАрдВ" рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдХрд░ рдпрд╛ рдирд┐рдХрд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗред рдлрд╝рдВрдХреНрд╢рди dd(рдорд┐рд╢реНрд░рд┐рдд $рдЗрдирдкреБрдЯ): рдХрднреА рдирд╣реАрдВ { рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ; }
  • рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди array_is_list рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рдгреА рдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ 0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдмрдврд╝рддреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИрдВ: $ рд╕реВрдЪреА = ["рдП", "рдмреА", "рд╕реА"]; array_is_list($рд╕реВрдЪреА); // рд╕рдЪ $notAList = [1 => "рдП", 2 => "рдмреА", 3 => "рд╕реА"]; array_is_list($notAList); // рдЧрд▓рдд $alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"]; array_is_list($рднреАNotAList); // рдЕрд╕рддреНрдп
  • рдЕрдм рдЖрдк рдореВрд▓ рд╡рд░реНрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрдВрддрд┐рдо" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдХреНрд╖рд╛ рдлреВ {рдЕрдВрддрд┐рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдПрдХреНрд╕ = "рдлреВ"; } рдХреНрд▓рд╛рд╕ рдмрд╛рд░ рдлреВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ { рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ X = "рдмрд╛рд░"; > рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐: Bar::X рдЕрдВрддрд┐рдо рд╕реНрдерд┐рд░рд╛рдВрдХ Foo::X рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ }
  • рдбрд┐рд╕реНрдХ рдХреИрд╢ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fsync рдФрд░ fdatasync рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИрдВред $рдлрд╝рд╛рдЗрд▓ = fopen('sample.txt', 'w'); fwrite($рдлрд╝рд╛рдЗрд▓, "рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА"); рдпрджрд┐ (fsync($рдлрд╝рд╛рдЗрд▓)) { рдЗрдХреЛ "рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬрд╛рд░реА рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред"; } fclose($рдлрд╝рд╛рдЗрд▓);
  • рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрдкрд╕рд░реНрдЧ "0" рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрд╖реНрдЯрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ "0o" рдФрд░ "0O" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЧрдИред 016 === 0o16; // рд╕рддреНрдп 016 === 0O16; // рд╕рддреНрдп
  • $GLOBALS рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмреИрдХрд╡рд░реНрдб рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $GLOBALS рдкрд░ рд▓рд┐рдЦрдирд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ $GLOBALS рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред 2000 рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 23 рд╣реА рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реНрд╡реАрдХреГрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ 8.1 рдЕрдм рдЗрд╕ рддрд░рд╣ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛: $GLOBALS = []; $рдЧреНрд▓реЛрдмрд▓реНрд╕ += []; $рдЧреНрд▓реЛрдмрд▓реНрд╕ =& $x; $x =& $рдЧреНрд▓реЛрдмрд▓реНрд╕; рдЕрдирд╕реЗрдЯ($рдЧреНрд▓реЛрдмрд▓реНрд╕); by_ref($рдЧреНрд▓реЛрдмрд▓реНрд╕);
  • рдЖрдВрддрд░рд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдм рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред PHP 8.1 рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди PHP 9.0 рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд▓реЗрдХрд░ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рддрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд░рд╣рд╛ред finfo_* рдФрд░ imap_* рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдП рдЧрдП рд╣реИрдВред
  • рдЧреИрд░-рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред PHP 8.1 рдореЗрдВ, str_contains("string", null) рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреА, рдФрд░ PHP 9 рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред
  • MurmurHash3 рдФрд░ xxHash рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

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

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