Examples for presentation.

This commit is contained in:
giedrius
2024-11-19 13:57:03 +02:00
commit 41f2b5eec1
23 changed files with 3351 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
<?php
namespace Example\VeryGood;
class Indexer
{
public static function reindex(array $elements, callable $indexGetter)
{
$result = [];
foreach ($elements as $element) {
$index = call_user_func($indexGetter, $element);
$result[$index] = $element;
}
return $result;
}
public static function applyWhenMatch(
array $elements,
array $sourceElements,
callable $sourceKeyGetter,
callable $destinationKeyGetter,
callable $action
)
{
$indexedSources = self::reindex($sourceElements, $sourceKeyGetter);
foreach ($elements as $element) {
$destinationKey = call_user_func($destinationKeyGetter, $element);
if (!array_key_exists($destinationKey, $indexedSources)) {
continue;
}
call_user_func($action, $element, $indexedSources[$destinationKey]);
}
}
}