PHP 7.4 рдореЗрдВ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕


рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЬрд┐рд╕реЗ рд╢реЙрд░реНрдЯ рдХреНрд▓реЛрдЬрд╝рд░ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, PHP рдореЗрдВ рд╕рд╛рдл рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред array_map рдпрд╛ array_filter рдЬреИрд╕реЗ array_map рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд▓реЗрдЦрди рдХрд╛ рдпрд╣ рд░реВрдк рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред


рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 //   Post $posts = [/* тАж */]; $ids = array_map(fn($post) => $post->id, $posts); 

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рдерд╛:


 $ids = array_map(function ($post) { return $post->id; }, $posts); 

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:


  • PHP 7.4 рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ
  • рдХреАрд╡рд░реНрдб fn рд╢реБрд░реВ рдХрд░реЗрдВ
  • рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рднреА рд╣реИред
  • рд╕рдорд░реНрдерд┐рдд return рдирд╣реАрдВ
  • рдкреНрд░рдХрд╛рд░- hintihg рддрд░реНрдХреЛрдВ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд░реВрдврд╝ рддрд░реАрдХрд╛:


 $ids = array_map(fn(Post $post): int => $post->id, $posts); 

рджреЛ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рддреЗрдВ:


  • рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдСрдкрд░реЗрдЯрд░ рдиреЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛
  • рд▓рд┐рдВрдХ рджреЛрдиреЛрдВ рддрд░реНрдХреЛрдВ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ

рдпрджрд┐ рдЖрдк рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:


 fn&($x) => $x 

рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЙрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдХреНрд▓реЛрдЬрд░ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред


рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИ


рдЖрдк рд╕рд╣реА рдкрдврд╝рддреЗ рд╣реИрдВ: рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЙрдирдореЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗред


рддрд░реНрдХ рдпрд╣ рд╣реИ: рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред fn , рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд░ рджреГрд╖реНрдЯрд┐ рд╕реЗ function рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред function рдФрд░ return рдХреАрд╡рд░реНрдб рдХреЛ return рджреЗрдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИред


рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рд░рд╛рдп рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ? рдЙрд╕реА рд╕рдордп, рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде, рдХрдИ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╡рд╛рд▓реЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдкрдЧреНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред


рдЙрдореНрдореАрдж рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдПрдХ рдЫреЛрдЯреА рдШреЛрд╖рдгрд╛ рдФрд░ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд░рдПрдлрд╕реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпреЗ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд╕рдкрдиреЗ рд╣реИрдВред


рдмрд╛рд╣рд░реА рджрд╛рдпрд░реЗ рд╕реЗ рдЪрд░


рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рджреЛрд╖реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реНрд╡ рдХреЛ рдмрд╛рд╣рд░реА рджрд╛рдпрд░реЗ рд╕реЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреАрд╡рд░реНрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред


 $modifier = 5; array_map(fn($x) => $x * $modifier, $numbers); 

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рдЗрди рдЪрд░реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдорд╛рди рдореВрд▓реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд╕рдВрджрд░реНрдн рд╕реЗ рдирд╣реАрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдЕрдВрджрд░ $modifier рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд $modifier рдЪрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред


рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж $this , рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛:


 array_map(fn($x) => $x * $this->modifier, $numbers); 

рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрд╡рд╕рд░


рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕реБрдЭрд╛рд╡ рд╣реИ, рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЫреЛрдЯреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рд▓рд┐рдП:


 class Post { private $title; fn getTitle() => $this->title; } 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддреАрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЬрдЧрд╣ рд╣реИред


рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

Source: https://habr.com/ru/post/hi476242/


All Articles