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.