рдХреЛрд▓рд╛рдбрд╛ - рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо

рдХреЛрд▓рд╛рдбрд╛ PHP рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

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

рд╕реНрдерд╛рдкрдирд╛


рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИ ... рдЗрд╕реЗ рдПрдХ рдЧрд┐рдЯ рдЙрдкрдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП :)

{ "require": { "alexeyshockov/colada": "dev-master" } } 

 $ git submodule add git://github.com/alexeyshockov/colada.git vendor/colada 

рд╕рдВрдЧреНрд░рд╣


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

 $counts = to_collection(array(2, 3, 50, 36)); $users = to_set(array('label1', 'label2', 'label3')); 

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 $counts = collection(2, 3, 50, 36); $users = set('label1', 'label2', 'label3'); 

рд▓рдЧрднрдЧ рдорд╛рдирдХ рд╕рд░рдгреА () рдХреА рддрд░рд╣!

mapBy (), acceptBy () / rejectBy (), foldBy ()


рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ " рдЫреЛрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? "ред рдХреЛрд▓рд╛рдбрд╛ рдХреЗ рдирдХреНрд╢реЗ рдореЗрдВ, рд╕реНрд╡реАрдХрд╛рд░ / рдЕрд╕реНрд╡реАрдХрд╛рд░ рдФрд░ рдЧреБрдирд╛ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЕрд░реНрде рд╣реИ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╣реИ (рдЕрдВрдбрд░рд╕реНрдХреЛрд░ред рдЬреЗрдПрд╕, рд╕реНрдХрд╛рд▓рд╛ рдХрд▓реЗрдХреНрд╢рдВрд╕, рдЖрджрд┐)ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 $saleCount = $users ->acceptBy(x()->isActive()) ->mapBy(x()->getSales()) ->foldBy(function($count, $posts) { return $count + count($posts); }, 0); 


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЕрдкрдиреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ, рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде ... рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ x ()?

x ()


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

рд╕реНрдХреЗрд▓рд╛:

 val emails = users.map(x.getEmail()); 

PHP (рдХреЛрд▓рд╛рдбрд╛):

 $emails = $users->mapBy(x()->getEmail()); 

PHP рдореЗрдВ, рд╕реНрдХреИрд▓реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИред рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдмрд╕ рдЧреЗрдЯрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

x () рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рднрд╡рд┐рд╖реНрдп рддрддреНрд╡ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд▓реЛрдЬрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:

 $emails = $users->mapBy(function($user) { return $user->getEmail() }); 

рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рд╣рд░ рдЫреЛрдЯреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдж рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ? рдлрд┐рд░ рд╣рдо рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВ! ;)

рд╣рд╢реА (рдЙрд░реНрдл рдирдХреНрд╢реЗ)


рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЗрд╡рд▓ рддрддреНрд╡реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рддреЛ рд╣реИрд╢ рдкреНрд░рдореБрдЦ / рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рд╣рдо рднреА рд╣рд░ рджрд┐рди рдореБрдарднреЗрдбрд╝ рдХрд░рддреЗ рд╣реИрдВред рдирд┐рдпрдорд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде, рд╣рдо рдПрдХ рд╣реИрд╢ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

 $users = to_map(array('managers' => array(1, 3), 'users' => array(2, 3, 4))); 

рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╢реИрд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рд┐рдЪрд┐рдд рдореИрдкрдмреА () рдФрд░ рдПрдХреНрд╕реЗрдкреНрдЯрдмрд╛рдп () / рд░рд┐рдЬреЗрдХреНрдЯрдмреА (), рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ: рдореИрдкрдПрд▓рд╛рдЗрдЬрд╝рдмрд╛рдп (), рдлреНрд▓рд┐рдк (), рдкрд┐рдХ ()ред

рдХрд┐рд╕реА рдиреЗ рдХрд╣рд╛ рдХрд┐ рдПрдХ рдХреЛрдб рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХрднреА-рдХрднреА рдПрдХ рд╣рдЬрд╛рд░ рд╢рдмреНрджреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИ:

 $usersByGroups = $users ->mapBy(x()->isActive()) ->groupBy(x()->getGroup()) ->mapElementsBy(x()->count()); foreach ($groups as $group) { echo 'Group "'$group->getName().'" contains '.$usersByGroups->get($group)->orElse(0).' users.'; echo "\n"; } 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╣реИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ "рдЪреАрдиреА" рддрд░реАрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдирдЪрд┐рддреНрд░ :: get () рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЖрд╡рд░рдг рд╡рд╕реНрддреБ, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рд╡рд░реНрддрдорд╛рди рдХреНрд╖рдгред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдореВрд▓реНрдп


рд╕рд░ рдПрдВрдердиреА рд╣реЛрдпрд░, рдЬрд┐рдиреНрд╣реЗрдВ NULL рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╢реНрд░реЗрдп рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛:
рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреА рдЕрд░рдмреЛрдВ рдбреЙрд▓рд░ рдХреА рдЧрд▓рддреА рдХрд╣рддрд╛ рд╣реВрдВред

рдПрдирдкреАрдИ (рдирд▓ рд╕реВрдЪрдХ рдЕрдкрд╡рд╛рдж) рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╡рд┐рд╖рдп рдкрд░, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╢рдмреНрдж рдХрд╣реЗ рдЧрдП рдФрд░ рдХрдИ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рддрдерд╛рдХрдерд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рд╢реБрд░реВрдЖрдд рд╣реИред рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рд╡реЗ рд╢реБрд░реВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ: рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП Google рдЕрдорд░реВрдж рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ ред

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

 echo ": "; echo $user->getCity()->mapBy(x()->getName())->orElse('-'); 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдореВрд▓реНрдп рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╢рд╣рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдпрд╣ рдХрднреА рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рднрд░рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рддрд░рд╣, рд╣рдо рдпрд╣ рдХрднреА рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рд╣реИрд╢ рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдХреБрдВрдЬреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

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

 foreach ($groups as $group) { echo 'Group "'$group->getName().'" contains '.$usersByGroups->apply($group).' users.'; echo "\n"; } 

рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрджрд┐ рддрддреНрд╡ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛ред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╖рдп рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ


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

рдлрд┐рд░ рднреА, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА, рдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд╛рдлреА рдерд╛ред рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SplFixedArray рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдирд┐рдпрдорд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рднреА рдХрдо рд╣реИ:

100,000 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ
 $ ./shell.sh // Call use_colada() function to benefit from all shortcuts ;) Interactive shell php > use_colada(); php > vd(memory_get_usage(), memory_get_peak_usage()); int(374736) int(383040) php > $nums = Collections::range(1, 100000); php > vd(memory_get_usage(), memory_get_peak_usage()); int(3575236) int(3581604) php > $nums = range(1, 100000); php > vd(memory_get_usage(), memory_get_peak_usage()); int(8099280) int(8105996) 

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

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

 $emails = $users ->acceptBy(x()->isActive()) ->mapBy(x()->getEmail()); 

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

 $emails = $users ->acceptBy(x()->isActive()) ->mapBy(x()->getEmail()); foreach ($emails as $email) { echo $email; } 

"рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ"


рд╕реНрдХрд╛рд▓рд╛ рднрд╛рд╖рд╛ (рд╕реНрдХрд╛рд▓рд╛ рдХрд▓реЗрдХреНрд╢рдВрд╕) рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рд╢реБрд░реВ рд╕реЗ рд╣реА рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ PHP рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреБрдЫ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдереЗ рдЬреЛ PHP рдореЗрдВ рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдереЗред

рдлрд┐рд░ рднреА, рдХреБрдЫ рдШрдЯрдирд╛рдХреНрд░рдо рд╣реИрдВ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рд▓рд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рддреБрд▓рдирд╛ рдХрд░ рд╕рдХреЗ рдФрд░ рд╕рд╣реА рдЙрдкрдХрд░рдг рдЪреБрди рд╕рдХреЗред

рддреЛ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреНрдпрд╛ рд╣реИ:

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


рдЙрдкрдпреЛрдЧреА (рд╕рдВрднрд╡рддрдГ) рд▓рд┐рдВрдХ:

рдкреБрдирд╢реНрдЪ


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

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


All Articles