Do wcześniej utworzonego helpera dopisujemy metodę takeRight. Lekcja łatwa, prosta i przyjemna. Do dzieła!

Nasza klasa z poprzedniego przykładu:

<?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]

Dopisujemy metodę, która pozwala nam brać „od prawej”:

<?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);
    }

    public static function takeRight($array, $limit){
        return array_slice(array_reverse($array), 0, abs($limit));
    }
}
$arr = ['a','b','c','d','e'];
print_r(Arr::take($arr, 2));
//[a,b]
print_r(Arr::take($arr, -2));
//[d,e]
print_r(Arr::takeRight($arr, 2));
//[e,d]
print_r(Arr::takeRight($arr, -2));
//[e,d]

Żeby lekcja nie była za krótka napiszemy jeszcze metodę wrap:

<?php
class Arr{

    //(...)

    public static function wrap($value)
    {
        if (is_null($value)) {
            return [];
        }

        return is_array($value) ? $value : [$value];
    }
}
print_r(Arr::wrap("hello"));
//Array ( [0] => hello )

Taka metoda istnieje w prawdziwym helperze z frameworku Laravel. Użytkownik nie musi widzieć zysku w używaniu tych helperów ani nawet ich znać.

Tym niemniej – twórcy tego frameworka używają własnych helperów do jego pisania. Dzięki temu ich kod jest czytelniejszy.

Uczmy się od najlepszych.