рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо
рдпрд╣рд╛рдВ рдРрд╕реЗ рдирд┐рдпрдо рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореИрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рднрд╛рд╖рд╛ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг PHP рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ (рдЬрд┐рд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред
рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╕рднреА рдЖрдЗрдЯрдо рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рдПрдХ рд╕реВрдЪреА (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдорд╛рди рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:
$goodList = [ 'a', 'b' ]; $badList = [ 'a', 1 ];
рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪреА рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рд╢реИрд▓реА рд╣реИ:
@var array<TypeOfElment>
ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛
int
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
PHP рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪреА рдЖрдЗрдЯрдо (0, 1, 2, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдПрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рди рддреЛ рдЗрди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рд╣реА рд╕реАрдзреЗ рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЧреНрд░рд╛рд╣рдХ рдХреЗрд╡рд▓
iterable
countable
рдФрд░
countable
рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ
countable
ред
рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ
foreach
рдФрд░
count()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрдХреНрд░ рдХрд░рдиреЗ рдХреЗ
for
рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ:
рдпрджрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреЛрдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реИрдВ, рддреЛ PHP рдореЗрдВ, рд▓реВрдк рдХреЗ
for
рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЗрдЯрдо рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЖрдк рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ (
unset()
) рджреНрд╡рд╛рд░рд╛ рдЖрдЗрдЯрдо рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп
array_filter()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рдЕрд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рдирд╣реАрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕реВрдЪреА рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдлрд┐рд░, рдХрд┐рд╕реА рдХреЛ рддрддреНрд╡ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ
array_filter()
рдЙрдкрдпреЛрдЧ
рдХрд░рддреЗ рд╕рдордп , рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП рдлреНрд▓реИрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдпрд╛ рддрддреНрд╡ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рднреАред
рдПрд╕реЛрд╕рд┐рдПрдЯрд┐рд╡ рдПрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрджрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ рдФрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ (0, 1, 2, рдЖрджрд┐) рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЖрдк рдЙрдирдХреА рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдорд╛рди рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╕рднреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдирд┐рдпрдо: рд╕рднреА рдЪрд╛рдмрд┐рдпрд╛рдБ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдпрд╣
string
)ред
$goodMap = [ 'foo' => 'bar', 'bar' => 'baz' ];
рд╕рднреА рдорд╛рди рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдореВрд▓реНрдпреЛрдВ рдкрд░ рднреА рдпрд╣реА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рд╡реЗ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
$goodMap = [ 'foo' => 'bar', 'bar' => 'baz' ];
рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА рд╣реИ:
@var array<TypeOfKy, TypeOfValue>
ред
рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгрд┐рдпрд╛рдБ рдирд┐рдЬреА рд░рд╣рдиреА рдЪрд╛рд╣рд┐рдП
рд╕реВрдЪрд┐рдпреЛрдВ, рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕рд╛рджрдЧреА рдХреЗ рдХрд╛рд░рдг, рдЙрдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рднреА рдЧреНрд░рд╛рд╣рдХ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрдХреНрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЧрд┐рди рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╕реВрдЪреА рдЦрд╛рд▓реА рд╣реЛред рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЙрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдирд┐рдЬреА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕реАрдзреЗ рдЖрдВрддрд░рд┐рдХ рдореИрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЧреЗрдЯрд░реНрд╕ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдмрд╕рдиреЗ рд╡рд╛рд▓реЗ) рдХреЛ рдорд╛рди рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рджреЗрдВред рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд рдХреБрдВрдЬреА рдХрд╛ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рджреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдЙрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдЬреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдХрд░реЗрдВред
рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ, рдпрд╛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЧреЗрдЯрд░реНрд╕ рдЬреЛрдбрд╝реЗрдВред рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рдХрдорд╛рдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
final class SillyRegisterUserCommand { public string $username; public string $plainTextPassword; public bool $wantsToReceiveSpam; public int $answerToIAmNotARobotQuestion; }
рдирд┐рдпрдо рдХреЗ рдЕрдкрд╡рд╛рдж
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдХрднреА-рдХрднреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдзрд┐рдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИред рдлрд┐рд░ рдкрд┐рдЫрд▓реЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ (рдФрд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп) рд╣реИред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд
рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ , рдФрд░ рд╕рд┐рдореНрдлрдиреА рдореЗрдВ
рдлреЙрд░реНрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред
рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдПрдВ
рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдПрдВ
Iterator
,
ArrayAccess
рдФрд░ рдЕрдиреНрдп рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЕрдХреНрд╕рд░ рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдмрд╛рд░ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреЛ PHP рдореИрдиреБрдЕрд▓ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рд╡рд╣ рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рд░рдЦрд░рдЦрд╛рд╡ (рдкрд░реАрдХреНрд╖рдг, рдбрд┐рдмрдЧ, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕рд░рдгреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдХреНрдпрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рд░рдгреА рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
- рдХрд┐рд╕реА рд╕рд░рдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрд░реНрдХ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ред
- рд╕рд░рдгреА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рддрд░реНрдХ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрджрд┐ рд╕рдорд╛рди рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд┐рд▓реНрдЯрд░, рддреБрд▓рдирд╛, рдХрдо, рдЧрд┐рдирддреА), рддреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд▓реЙрдЬрд┐рдХ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдмрд╕ рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ:
$names = [];
рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк
array_filter()
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдФрд░ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдирд╛рдо рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреНрдпрдерд╛ рдЦреЛрдЬрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрдЧрд╛ред
рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдирдмрд╛рдЗрдВрдб рдХрд░реЗрдВ
рдпрджрд┐ рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдЗрдХрд┐рд▓ рдЪрд▓рд╛рддрд╛ рд╣реИ, рддреЛ рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ: рд╕рд░рдгреА, рддрддреНрд╡, рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдорд╛рди, рдЪрдпрдирдХрд░реНрддрд╛ рд╡рд┐рдзрд┐, рдЖрджрд┐ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧрд╣рд░реЗ рдмрдВрдзрди рдХреЗ рдХрд╛рд░рдг, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдмрджрд▓рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рд░рдгреА рдХреЛ рднреА рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реА рдЙрддреНрддрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЕрдВрджрд░ рдХреА рдЧрдгрдирд╛ рдХреЛ рдвреАрд▓рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмрдВрдзрди рдХреЛ рдвреАрд▓рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред
$lines = []; $sum = 0; foreach ($lines as $line) { if ($line->isComment()) { continue; } $sum += $line->quantity(); }
рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд┐рдпрдо
рдЙрдиреНрд╣реЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрдирд╛рдУ
рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╕рдордп, рд╕рдВрдЧреНрд░рд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдореМрдЬреВрджрд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЛ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдерд╛:
final class Names { private array $names; public function __construct(array $names) { Assert::that()->allIsString($names); $this->names = $names; } public function shortNames(): self { return new self( ); } }
рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдк рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рд░рдгреА рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдпрд╛ рд╕рд╛рдзрд╛рд░рдг рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред
рдХреЗрд╡рд▓ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рд┐рдП
рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╛ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░реЗрдВ, рдХреЗрд╡рд▓ рд╡рд╣реА рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЖрдк рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВред
IteratorAggregate рдФрд░ ArrayIterator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдк PHP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
Iterator
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ (рдЖрдВрддрд░рд┐рдХ
ArrayIterator
рдмрдЪрд╛рдиреЗ рдЖрджрд┐) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреЗрд╡рд▓
IteratorAggregate
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд╕рд░рдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░
ArrayIterator
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреЗрдВ:
final class Names implements IteratorAggregate { private array $names; public function __construct(array $names) { Assert::that()->allIsString($names); $this->names = $names; } public function getIterator(): Iterator { return new ArrayIterator($this->names); } } $names = new Names([]); foreach ($names as $name) {
рд╕рдордЭреМрддрд╛
рдЪреВрдВрдХрд┐ рдЖрдк рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдирд╣реАрдВ)ред рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдЙрдкрдпреЛрдЧреА рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ (рдореБрдЦреНрдпрддрдГ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рдореИрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрдкрдиреЗ рд╕рдВрдЧреНрд░рд╣ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред