Piszemy klasę helpera do tablic, którego będziemy używać w naszym frameworku MVC, aby uporządkować sobie kod, podobnie jak robi to Laravel.

Na początku zobaczmy, jak działa funkcja array_slice, bo z jej pomocą napiszemy sobie take:

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 0, 2);
print_r($output);
//[a,b]

Zaczęło od 0, wzięło 2. Teraz zacznijmy z negatywnym argumentem:

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, -2, 2);
print_r($output);
//[d,e]

Zaczęło 2 od końca i 2 wzięło. Pamiętamy jak działa wartość bezwzględna?

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, -2, abs(-2));
print_r($output);
//[d,e]

Odległość od punktu 0 na osi X (lub inaczej – zamienia minus na brak minusa jeśli minus).

Teraz mamy już wszystko, aby napisać naszą funkcję take:

<?php
class Arr{
    public static function take($array, $limit)
    {
        if ($limit < 0) {
            return array_slice($array, $limit, abs($limit));
        }

        return array_slice($array, 0, $limit);
    }
}

$arr = ['a','b','c','d','e'];
print_r(Arr::take($arr, 2));
//[a,b]
print_r(Arr::take($arr, -2));
//[d,e]

Nasza metoda bierze określoną ilość elementów (jeżeli minus, zaczyna od końca).

Helpera będziemy rozwijać.