Exemple #1
0
<?php

Chain::addTerminal('join', function ($data, $joiner = '', $terminalJoiner = null, $ifEmpty = '') {
    if (is_null($terminalJoiner)) {
        $terminalJoiner = $joiner;
    }
    switch (count($data)) {
        case 0:
            return $ifEmpty;
        case 1:
            return $data[0];
        case 2:
            return join($terminalJoiner, $data);
        default:
            $last = array_pop($data);
            return join($terminalJoiner, [join($joiner, $data), $last]);
    }
});
Exemple #2
0
<?php

Chain::addTerminal('sum', function ($data) {
    return array_sum($data);
});
Exemple #3
0
<?php

Chain::addTerminal('shift', function ($data) {
    return array_shift($data);
});
Exemple #4
0
<?php

Chain::addTerminal('first', function ($data, $ifEmpty = null) {
    return empty($data) ? $ifEmpty : array_values($data)[0];
});
Exemple #5
0
<?php

Chain::addTerminal('reduce', function ($data, $action, $initial = null) {
    return array_reduce($data, $action, $initial);
});
Exemple #6
0
<?php

Chain::addTerminal('product', function ($data) {
    return array_product($data);
});
Exemple #7
0
<?php

Chain::addTerminal('asEnglish', function ($data, $ifEmpty = '') {
    return count($data) == 2 ? hooray($data)->join(' and ') : hooray($data)->join(', ', ', and ', $ifEmpty);
});
Exemple #8
0
<?php

Chain::addTerminal('pop', function ($data) {
    return array_pop($data);
});