PHP рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

PHP рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рд▓, рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд░рд╣реА рд╣реИ, C рдФрд░ рдкрд░реНрд▓ рд╕реЗ рдЗрд╕рдХреА рдкреНрд░реЗрд░рдгрд╛ рд▓реЗрддреА рд╣реИред PHP 5 рдореЗрдВ рд╕рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди PHP 5.3 рдореЗрдВ, рдХреНрд▓реЛрдЬрд╝рд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 5.4 (рд╕рдВрдХреЗрдд: $this рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ) рдореЗрдВ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рдерд╛ред

рдпрд╣ рд╕рдм рдПрдХ рд╣реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдХрдИ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рд╕реАрдзрд╛ рдФрд░ рд╕рдЯреАрдХ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реВрдВред рдФрд░ рдлрд┐рд░ рднреА, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдХрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рдХрдм рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛: рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдорддреМрд░ рдкрд░ рдмрджрд▓рддреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╢реБрджреНрдз рдХрд╛рд░реНрдп рдПрдХ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рддрд░реНрдХ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рд╡рд┐рдкрд░реАрдд рдЙрджрд╛рд╣рд░рдг рд╡рд╕реНрддреБ рдЙрдиреНрдореБрдЦ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд░ рд╣реИред

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

рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХрдИ рдЖрдХрд░реНрд╖рдХ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ: рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рдХреА рдХрдореА рд╕рдорд╛рдирддрд╛ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИ (рд▓реЗрдХрд┐рди рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ - рд╕рдорд╛рдирддрд╛ рдХрднреА рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ), рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП - рдХреЛрдб рдХреА рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдЗрдХрд╛рдИ рдкрд░ рдЬреЛ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ - рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЙрдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ; рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рд╣реИред

PHP рдХреНрдпрд╛ рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

PHP рдПрдХ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдпрд╛ "рд╢реБрджреНрдз" рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╣ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдХреЛрдИ рдЙрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, " рд╢рд╛рдВрдд рд▓реЛрдЧ " рд╣рдорд╛рд░реЗ рд╡рд┐рджреЗрд╢реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рдВрд╕реА рдХреЗ рд╕рд╛рде рд╕рд╡рд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ array_walk() рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИ, рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк "рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ" рд╣реИрдВред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, call_user_func , call_user_func_array рдФрд░ $callable() ред call_user_func рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред call_user_func_array рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╡рд╣ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ (рдмрд┐рдирд╛ рдкрд╛рд╕рд┐рдВрдЧ рд╕реНрдХреЛрдк рдХреЗ) fn.call() рдФрд░ fn.apply() рд╕рдорд╛рди рд╣реИред PHP 5.4 рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдХрдо рдкреНрд░рд╕рд┐рджреНрдз рд▓реЗрдХрд┐рди рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред callable PHP рдореЗрдВ рдПрдХ рдореЗрдЯрд╛-рдкреНрд░рдХрд╛рд░ рд╣реИ (рдЬреЛ рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ): рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ <string,string> рд╕реНрдереИрддрд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <string,string> рдХрд╛ рдПрдХ рд╕рд░рдгреА рдФрд░ рдХрд┐рд╕реА <object,string> рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП <object,string> рдХреА рдПрдХ рд╕рд░рдгреА, Closure рдпрд╛ __invoke() рдореИрдЬрд┐рдХ рдореЗрдердб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рдЪреАрдЬ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдЬрд┐рд╕реЗ __invoke() рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 $print = 'printf'; $print("Hello %s\n", 'World'); 

PHP 5.4 рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ "рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп" рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рддрдХ рдЖрд╕рд╛рди рдкрд╣реБрдБрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
PHP рднреА рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд╕реНрдХреЗрд▓ рд╕рдореБрджрд╛рдп рдЗрд╕ рддрдереНрдп рдкрд░ рджрд┐рд▓ рд╕реЗ рд╣рдБрд╕рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рджреВрд░ рдХрд░ рд▓реЗрдВред рдФрд░ рдЪреБрдЯрдХреБрд▓реЗ рдХрд╛рдлреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рдпрдерди рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВред

 map(lambda v: v * 2, [1, 2, 3]) 

рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЕрдм рд░реВрдмреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 [1, 2, 3].map{|x| x * 2} 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдФрд░ рдПрдХ рд▓реИрдХреНрд╕ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рд░реВрдмреА рдХреЗ рдкрд╛рд╕ рд▓рдВрдмреЛрджрд░ рднрд╛рд╡ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди List.maphappens рдмреНрд▓реЙрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВред рдЪрд▓реЛ рд╕реНрдХрд╛рд▓рд╛ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:

 List(1, 2, 3).map((x: Int) => x * 2) 

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

 array_map(function ($x) {return $x * 2;}, [1, 2, 3]); 

function рдХреАрд╡рд░реНрдб рдФрд░ рдПрдХ рдирд┐рд╣рд┐рдд return рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмреЛрдЭрд┐рд▓ рдмрдирд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреБрд▓реНрд▓рдХ рдореЗрдВ рдПрдХ рдФрд░ "рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ"ред
рд╡реИрд╕реЗ, array_map рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ array_reduce рднреА рд╣реИ; рдпрд╣рд╛рдБ рджреЛ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реНрд╡ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг

рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЦрд░реАрджрд╛рд░реА рдХреА рдЯреЛрдХрд░реА рдХреА рдХреБрд▓ рдХреАрдордд рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ:

 $cart = [ [ 'name' => 'Item 1', 'quantity' => 10, 'price' => 9.99, ], [ 'name' => 'Item 2', 'quantity' => 3, 'price' => 5.99, ] ]; function calculate_totals(array $cart, $vatPercentage) { $totals = [ 'gross' => 0, 'tax' => 0, 'net' => 0, ]; foreach ($cart as $position) { $sum = $position['price'] * $position['quantity']; $tax = $sum / (100 + $vatPercentage) * $vatPercentage; $totals['gross'] += $sum $totals['tax'] += $tax $totals['net'] += $sum - $tax; } return $totals; } calculate_totals($cart, 19); 

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

рдЖрдЗрдП рдЙрдЪреНрдЪ рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ:

 $cart = [ [ 'name' => 'Item 1', 'quantity' => 10, 'price' => 9.99, ], [ 'name' => 'Item 2', 'quantity' => 3, 'price' => 5.99, ] ]; function calculate_totals(array $cart, $vatPercentage) { $cartWithAmounts = array_map( function (array $position) use ($vatPercentage) { $sum = $position['price'] * $position['quantity']; $position['gross'] = $sum; $position['tax'] = $sum / (100 + $vatPercentage) * $vatPercentage; $position['net'] = $sum - $position['tax']; return $position; }, $cart ); return array_reduce( $cartWithAmounts, function ($totals, $position) { $totals['gross'] += $position['gross']; $totals['net'] += $position['net']; $totals['tax'] += $position['tax']; return $totals; }, [ 'gross' => 0, 'tax' => 0, 'net' => 0, ] ); } calculate_totals($cart, 19); 

рдЕрдм рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рднреАред array_map() рд╡рдЬрди, рдХрд░ рдФрд░ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЯреЛрдХрд░реА рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рдФрд░ array_reduce рдлрд╝рдВрдХреНрд╢рди рдХреБрд▓ рд░рд╛рд╢рд┐ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдФрд░ рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдФрд░ рднреА рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:

рдЕрдм рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╣рд╛рдпрдХ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рд╕рд╣рд╛рдпрдХ рдлрдВрдХреНрд╢рдирд▓-рдкреАрдПрдЪрдкреА рд╣реЛрдЧрд╛ , рдЬреЛ рдХрд┐ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╕ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, Functional\pluck() _.pluck() рдЬреЛ underscore.js ред _.pluck() рд╕реЗ _.pluck() рдХреЗ рд╕рдорд╛рди рд╣реИред рд╡рд╣рд╛рдБ рд╕реЗ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп Functional\zip() ред рдпрд╣ рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ "рд╕рдВрдХреБрдЪрд┐рдд" рдХрд░рддрд╛ рд╣реИред Functional\sum() рдПрдХ рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

 use Functional as F; $cart = [ [ 'name' => 'Item 1', 'quantity' => 10, 'price' => 9.99, ], [ 'name' => 'Item 2', 'quantity' => 3, 'price' => 5.99, ] ]; function calculate_totals(array $cart, $vatPercentage) { $gross = F\sum( F\zip( F\pluck($cart, 'price'), F\pluck($cart, 'quantity'), function($price, $quantity) { return $price * $quantity; } ) ); $tax = $gross / (100 + $vatPercentage) * $vatPercentage; return [ 'gross' => $gross, 'tax' => $tax, 'net' => $gross - $tax, ]; } calculate_totals($cart, 19); 

рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рддрд┐рд╡рд╛рдж рддреБрд░рдВрдд рдЙрдарддрд╛ рд╣реИ: рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ? рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл рд╕реЗ - рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрджрдд рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд╕реНрдХрд╛рд▓рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрджрдд рдбрд╛рд▓рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛; OOP рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╣реА рд░реВрдк рд╣реИ рдЬреЛ рдЖрдк рдПрдХ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде, рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬрдм рдЖрдк рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП foreach рдЬреИрд╕реЗ рднрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдкреНрд░рддрд┐ рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рддрдирд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

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

рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ: рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ n рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ <n рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рддрд╛рд░ рдХреА рд╕реВрдЪреА рд╕реЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рд▓реЗрдВред
рдмреЛрд░рд┐рдВрдЧ рддрд░реАрдХрд╛:

 $list = ['foo', 'bar', 'baz']; $firstChars = []; foreach ($list as $str) { $firstChars[] = substr($str, 0, 1); } 

PFA рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрде (рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ):

 array_map(function ($str) {return substr($str, 0, 1);}, ['foo', 'bar', 'baz']); 


PFA рдХреЗ рд╕рд╛рде рдкрде рдФрд░ reactphp/curry рдХрд╛ рдЙрдкрдпреЛрдЧ reactphp/curry (PHP рдХреЗ рд▓рд┐рдП reactphp/curry рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди):

 use React\Curry; array_map(Curry\bind('substr', Curry\тАж(), 0, 1), ['foo', 'bar', 'baz']); 

рд╣рд╛рдВред ... (HORIZONTAL ELLIPSIS, U+2026) PHP рдореЗрдВ рд╕рд╣реА рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдЗрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ useCurry\placeholder() ред

рд╡рд╣ рд╕рдм

рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдорд╛рдВрдЪрдХ рд╡рд┐рд╖рдп рд╣реИ; рдЕрдЧрд░ рдореБрдЭрд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛ рдХрд┐ рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬ рд╕реАрдЦреА, рддреЛ рдореИрдВ рддреБрд░рдВрдд рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ - рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рддред рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХрд╛ рдорд╕реНрддрд┐рд╖реНрдХ рдЖрд╣рдд рд╣реЛрдЧрд╛ред рдЦреИрд░, рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗред

рдФрд░ рдЕрдВрдд рдореЗрдВ: " рд░рд┐рдпрд▓ рд╡рд░реНрд▓реНрдб рдлрдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ " рдкрдврд╝реЗрдВред рдпрд╣ рдЕрдЪреНрдЫреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред

рдореИрдВ рдирд┐рдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд▓реЗрдЦ рдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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


All Articles