рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреА PHP рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА: рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмреНрд░реИрдб рдХреЗ рдХреБрдЫ рдХрд╛рд░рдирд╛рдореЛрдВ, рдПрдХ рдЕрдЬреАрдм рдЕрдиреБрдХреНрд░рдо рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░

рдирдорд╕реНрддреЗ! рд╣рдордиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ - рд╣рдо рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдорд┐рдиреА-рдХреНрд╡рд┐рдЬрд╝ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ (рдкрд┐рдЫрд▓реЗ: 1 (рдкрд╛рдпрдерди, рдкреАрдПрдЪрдкреА, рдЧреЛрд▓рд╛рдВрдЧ рдФрд░ рджреЗрд╡рдУрдкреНрд╕ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП) , 2 (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреЛ рдкрд░ )ред рдЖрдЬ рдХреА рд░рд┐рд▓реАрдЬ PHP рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд - рдЖрда рд╕рд╡рд╛рд▓, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмреНрд░реИрдб рдХреЗ рдХреБрдЫ рдХрд╛рд░рдирд╛рдореЛрдВ, рдПрдХ рдЕрдЬреАрдм рдЕрдиреБрдХреНрд░рдо рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╢рд╛рдВрдд рдорд░реНрдЪред рдХреНрд╡рд┐рдЬ 4 рдЬреБрд▓рд╛рдИ рддрдХ рдЪрд▓рддрд╛ рд╣реИред

UPD 2: рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╣рдорддрд┐ рд╣реИ, рд╣рдо рдХреНрд╡рд┐рдЬрд╝ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рд╕рд╣реА рдЬрд╡рд╛рдм рдХреЗ рдмрд╛рдж рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЫрд┐рдкрд╛рдП рдЧрдП рдереЗред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреВрдЫреЗрдВред

UPD: рд╣рдордиреЗ рдЙрддреНрддрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрдирдХреЗ рдЙрддреНрддрд░ рдкрд╛рда рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ, рдФрд░ рд╡рд┐рдЬреЗрддрд╛ рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░ рд╡рд┐рдЬреЗрддрд╛ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рд╣реИрдВред
PHP рдХреНрд╡рд┐рдЬрд╝ рдХреЗ рд╡рд┐рдЬреЗрддрд╛ рдФрд░ рдкреБрд░рд╕реНрдХрд╛рд░ рд╡рд┐рдЬреЗрддрд╛

рд╡рд┐рдЬреЗрддрд╛


egor_nullptr

рдкреБрд░рд╕реНрдХрд╛рд░ рд╡рд┐рдЬреЗрддрд╛рдУрдВ


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

рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдВ


рдмреЛрдирд╕!


рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХреЗрд╡рд▓ рдПрдХ рдЧрд▓рддреА рдХреА рд╣реИ, рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╣реЛрд▓реАрд╡реЗрдиреА рд╣рдбреНрдбрд┐рдпреЛрдВ рдХреЛ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдкрдиреА рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рднрд╛рд╖рд╛ рдФрд░ рдлреНрд░рдВрдЯреЗрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ / рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреЛ рд░реАрдореЗрдХ рдХрд░реЗрдВред рд╡реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ: DjSebas , TexElless , Turik-us , offlinewan , voiceofnoise , andrey_96 , happy - almighty ред




рдЦреЗрд▓ рдХреЗ рдирд┐рдпрдо


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

рд╣рдо рджрд╕ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдПрд╡рд┐рдЯреЛ-рдореЛрдЬреЗ рднреЗрдЬреЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕рд╣реА рдЙрддреНрддрд░ рджрд┐рдпрд╛ ред рд░реИрдВрдбрдорд╛рдЗрдЬрд╝рд░ рдХреА рдорджрдж рд╕реЗ рдЦреЗрд▓рддреЗ рд╣реИрдВред рд╡рд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреМрди рджреЛ рдФрд░ рдЯреА-рд╢рд░реНрдЯ рдФрд░ рд╣рдбреНрдбрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬрд╛рдПрдЧрд╛ред



рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк


рдкреНрд░рд╢реНрди 1


рдХреЛрдб рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

<?php $a = [1, 2, 3]; foreach($a as &$value) {} foreach($a as $value) {} print_r($a); 

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1. рдРрд░реЗ (1, 2, 3)
  2. рдРрд░реЗ (1, 2, 2)
  3. рдРрд░реЗ (3, 2, 1)
  4. рддреНрд░реБрдЯрд┐

рд╕рд╣реА рдЙрддреНрддрд░
рдРрд░реЗ (1, 2, 2)

рд╡реНрдпрд╛рдЦреНрдпрд╛
рдЪреВрдВрдХрд┐ php рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╡реИрд░рд┐рдПрдмрд▓ рдЗрд╕рдХреЗ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЬреАрд╡рд┐рдд рд░рд╣рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ $ рд╡реИрд▓реНрдпреВ рд╡реИрд░рд┐рдПрдмрд▓ рдПрд░реЗ рдХреЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдлреЙрд░реНрдЪреНрдпреВрд╢рди рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди, рд╕рд░рдгреА рд╕реЗ рдорд╛рди рдЗрд╕рдХреЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ (рдЪреВрдВрдХрд┐ $ рдореВрд▓реНрдп рдПрдХ рд╕рдВрджрд░реНрдн рд╣реИ) рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдпрд╣ рджреВрд╕рд░реЗ рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдПрдХ рд╕рд░рдгреА рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
1. [1, 2, 1]
2. [1, 2, 2]
3. [1, 2, 2]

рдкреНрд░рд╢реНрди реи


рдХреЛрдб рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

 <?php function sowCrops() { return 'wheat'; } function millWheat() { return 'flour'; } function bake($flour) { return 'cupcake'; } function generator() { $flour = yield millWheat(); $wheat = yield sowCrops(); return bake($flour); }; $gen = generator(); foreach ($gen as $key => $value) { echo $key . ' => ' . $value . PHP_EOL; } echo $gen->getReturn(); 

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1.   0 => flour 1 => wheat 

  2.   0 => wheat 1 => flour 2 => cupcake 

  3.  0 => flour 1 => wheat cupcake 

  4.  cupcake 



рд╕рд╣реА рдЙрддреНрддрд░
4ред
 0 => flour 1 => wheat cupcake 



рд╡реНрдпрд╛рдЦреНрдпрд╛
рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдмрд╕ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдкреНрд░рд╢реНрди 3


рдПрдХ рдмрд╛рд░, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмреНрд░реИрдб рдиреЗ GitHub рдкрд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Go рд╕реЗ PHP рдореЗрдВ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рд╕реЛрдЪрд╛:

рдХреНрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рд╕рдВрднрд╡ рд╣реИ?

 <?php print_r(...(new Foo())); 

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1. рд╣рд╛рдВ, Foo рд╡рд░реНрдЧ рдХреЛ рдЯреНрд░реИрд╡рд░реНрд╕реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
  2. рд╣рд╛рдВ, Foo рд╡рд░реНрдЧ рдХреЛ ArrayAccess рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
  3. рдирд╣реАрдВ, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА, ... рдСрдкрд░реЗрдЯрд░ рдХрд╛ рддрд░реНрдХ рдПрдХ рд╕рд░рдгреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рд╣реА рдЙрддреНрддрд░
1. рд╣рд╛рдБ, рдлреВ рд╡рд░реНрдЧ рдХреЛ рдЯреНрд░реИрд╡рд░реНрд╕реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╡реНрдпрд╛рдЦреНрдпрд╛
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рддрд░реНрдХ рдЕрдирдкреИрдХрд┐рдВрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ :
рдЯреНрд░реИрд╡рд░реНрд╕реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрд░реЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рддрд░реНрдХ рд╕реВрдЪреА рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...


рдкреНрд░рд╢реНрди 4


рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП PHP рдХреЗ рджрд┐рд▓ рдореЗрдВ рдЫрдБрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1. рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд┐рд▓рдп
  2. рд╣реАрдкреНрд╕реЛрд░реНрдЯ (рдПрдбреНрд╕реНрдЬрд░ рдбреЗрдЬреНрд╕реНрдЯреНрд░рд╛ рд╕реНрдореВрдерд░реНрд╕ рдХреА рднрд┐рдиреНрдирддрд╛)
  3. рддреАрди рдХреЗ рдордзреНрдп рдореЗрдВ
  4. introsort

рд╕рд╣реА рдЙрддреНрддрд░
4. рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг

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


рдкреНрд░рд╢реНрди 5


рдПрдХ рдХреЛрдб рд╣реИ:

 <?php class Factory { public function getLambda(): Closure { return function () { printf("Here I am (%s)!\n", get_class($this)); }; } public function getLambda2(): Closure { return static function () { printf("Here I am (%s)!\n", get_class($this)); }; } } 

рдкреНрд░рд╢реНрди: GetLambda рдФрд░ getLambda2 рд░рд┐рдЯрд░реНрди рдорд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИ?

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1. рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдереИрддрд┐рдХ :) рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
  2. GetLambda2 () рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
  3. рдЗрд╕рд▓рд┐рдП рдЖрдк рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА "рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐: рдЧрд▓рдд рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕реНрдерд┐рд░ рдХреАрд╡рд░реНрдб"
  4. GetLamda2 () рд╕реЗ рдХреНрд▓реЛрдЬрд╝рд░ рдХреЗрд╡рд▓ (bindTo) рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрд╛рдБрдз рд╕рдХрддрд╛ рд╣реИ

рд╕рд╣реА рдЙрддреНрддрд░
2. getLambda2 () рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рд╡реНрдпрд╛рдЦреНрдпрд╛
GetLambda2 () рд╡рд┐рдзрд┐ рдПрдХ рд╕реНрдерд┐рд░ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ -> bindTo () рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рджреБрд░реНрд▓рдн рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА

рдкреНрд░рд╢реНрди 6


рдХреЛрдб рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

 <?php $a = true; $b = false; $c = $a and $b; $d = $a && $b; var_dump($c); var_dump($d); 

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1.  bool(false) bool(false) 
  2.  bool(false) bool(true) 
  3.  bool(true) bool(true) 
  4.  bool(true) bool(false) 

рд╕рд╣реА рдЙрддреНрддрд░
4ред
 bool(true) bool(false) 


рд╡реНрдпрд╛рдЦреНрдпрд╛
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдореЗрдВ && рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ $ d = $ a && $ b $ d = ($ a && $ b) рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ $ c = $ a рдФрд░ $ b рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ (($ c = $ a) рдФрд░ $ b рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рд╢реНрди 7


рдХреЛрдб рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

 <?php $a = 'a'; for ($i = 0; $i < 40; $i++) { echo $a++, PHP_EOL; } 

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1. 0 рд╕реЗ 39 рддрдХ рдХреЗ рдЕрдВрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рдЪреЗрддрд╛рд╡рдиреА: рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдПрдХ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
  2. рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ 'a' + рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧреА
  3. рдЕрдЬреАрдм рдЕрдиреБрдХреНрд░рдо:
     a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an 

рд╕рд╣реА рдЙрддреНрддрд░
3. рдЕрдЬреАрдм рдЕрдиреБрдХреНрд░рдо:
 a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an 


рд╡реНрдпрд╛рдЦреНрдпрд╛
рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдкрд╛рддреНрд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рд╕реЗ:
PHP рд╡рд░реНрдг рдЪрд░ рдХреЗ рд╕рд╛рде рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд░реНрд▓ рд╕рдореНрдореЗрд▓рдиреЛрдВ (рд╕реА рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PHP рдФрд░ рдкрд░реНрд▓ $ a = 'Z' рдореЗрдВ; $ рдП ++; $ a рдХреЛ 'AA' рд╕реЗрдЯ рдХрд░реЗрдЧрд╛, рдЬрдмрдХрд┐ C a = 'Z' рдореЗрдВ; рдП ++; '[' рдХрд╛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ('Z' рдХрд╛ ASCII рдорд╛рди 90 рд╣реИ, рдФрд░ '[' рдХрд╛ ASCII рдорд╛рди 91 рд╣реИ)ред


рдкреНрд░рд╢реНрди 8


рдХреЛрдб рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

 <?php class TestMe { public function test() { if (0) { yield 32332; } return [1,2,3]; } } $t = new TestMe(); foreach ($t->test() as $id) { echo $id, PHP_EOL; } echo "The end", PHP_EOL; 

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк:

  1.  1 2 3 32332 The end 

  2.  1 2 3 The end 

  3.  The end 

  4.  32332 The end 


рд╕рд╣реА рдЙрддреНрддрд░
3ред
 The end 



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

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


рд╣рдо рдмреБрдзрд╡рд╛рд░ 4 рдЬреБрд▓рд╛рдИ рдХреЛ рдкреЛрд╕реНрдЯ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ ред рдпрджрд┐ рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ - рдЬрд╡рд╛рдм рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдиреАрдЪреЗ рд░рдЦреЗрдВ рддрд╛рдХрд┐ рджреВрд╕рд░реЛрдВ рдХрд╛ рдордЬрд╝рд╛ рдЦрд░рд╛рдм рди рдХрд░реЗрдВред рдФрд░ рдкреНрд░рд╢реНрдиреЛрддреНрддрд░реА рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реИрдмрд░ рдХреЗ рдЦрд╛рддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!

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


All Articles