Připravil jsem pro vás programátorské cvičení, díky kterému se naučíte něco nového i na zdrojových kódech, které píšete denně. Těch cvičení mám celkem 7 a v průběhu času je všechny projdeme a co bude chtít, adoptujete do své denní praxe. Jak to funguje?
Já vám popíšu nějaký postup. Obvykle se bude jednat o žádoucí praktiku, takže by s tím neměl zaměstnavatel mít problém – navíc se jedná o tipy a triky, které nebudou vyžadovat čas navíc. Vy to zkusíte jeden den praktikovat a podělíte se, jak to šlo. Pokud se rozhodnete používat postup i nadále, tím lépe pro vás!
Takže zadání první.
Nepoužívejte for ani foreach tam, kde se v PHP dá použít array_map, array_filter, array_reduce nebo array_walk.
Co se naučíte?
Zmiňované funkce array_* vedou k některým návykům z funkcionálního programování. Jejich výhodou je sémantičnost. Jejich nevýhodou je, že se to musíte naučit číst (potom se vám už čtou lépe) – s tím mělo už hodně mých kolegů problém. Nicméně naučíte se funkcionálnější postup.
Po chvíli vám bude přístup:
$vysledek = array_map($modifikator, $vstup);
Připadat logičtější, než:
$vysledek = array();
foreach ($vstup as $rada) {
$vysledek[] = $modifikator($rada);
}
Aby byl váš kód ještě čitelnější a sémantičtější, můžete použít můj nástroj Googy, který funkcionální programování v PHP v mnoha ohledech usnadňuje.
V Googym by takový kus zdrojáku vypadal:
use Googy as _;
$výsledek = _\Arr($vstup)->map($modifikatorMap)->toArray();
$výsledek = _\Arr($vstup)->filter($modifikatorFilter)->toArray();
$výsledek = _\Arr($vstup)->reduceLeft($modifikatorReduce)->toArray();
Array filter se dá redukovat na filter(). Array_walk funguje stejně pomocí map, jen přiřadíte do původní proměnné a array_reduce má obdobu v metodě reduceLeft.
