Sylph: рджреАрдк рд╕реНрдЯрдмреНрд╕, PHPixie рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдХрд┐рд╕реА рдРрд░реЗ рдХреЛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ

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


рдХрднреА-рдХрднреА рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЧрд╣рд░реЗ рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
class Fairy{ public $name; protected $home_tree; public function __construct($name, $home_tree){ $this->name = $name; $this->home_tree = $home_tree; } //           //      public function get_friends(){ $friends = $this->home_tree->num_squirrels; $friends += $this->home_tree->forest->num_animals('bunny')); return $friends; } 


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

Sylph рд╕рд░рд▓ рд╕рдВрдмрджреНрдз рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо $ home_tree рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $sylph = new \PHPixie\Sylph(); $home_tree = $sylph->cast(array( 'num_squirrels' => 5, 'forest' => $sylph->cast(array( 'num_animals' => function($animal){ if($animal == 'bunny') return 4; throw new \Exception('Animal not found'); } )) )); 


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

 $num_bunnies = 5; $bunnies = $sylph->cast(array( 'add' => function($new) use($num_bunnies){ return $new + $num_bunnies; } )); $bunnies->add(1); // 6 $bunnies->add(2); // 7 $num_bunnies = 2; $bunnies->add(1); // 3 $bunnies->add(2); // 4 


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, PHPixie рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

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


All Articles