Pomocné nástroje
Při vývoji software se obvykle hodí různé pomocné funkce, ze kterých se výsledný program skládá.
Některé úkony jsou však výrazně jednodušší, než aby potřebovali celou knihovnu, ale zase jsou
složitější, než aby se v kódu opakovaly. A pro tyto účely vznikla obecná knihovna
interitty/utils
rozšiřující a doplňující obecnou
nette/utils,
která obsahuje množství právě takových funkcí.
Assertovatelné kontroly
Výchozí knihovna nette/utils
disponuje výborným nástrojem
Nette\Utils\Validator
, který umožňuje jednoduše a při tom velmi exaktně zkontrolovat
předaná data. Formát zápisu takových kontrol je přehledný a snadno použitelný a má potenciální
využití v „low-code“ a „self-documented” řešení.
Kontroly uživatelem zaslaných dat jsou obvykle nezbytné pro správnou funkčnost programu. Pro účely vývoje, zvláště pak různých knihoven, se ale může hodit doplnit kontroly i do vnitřních částí programu, kam už mají dorazit ošetřená a validní data. Takové kontroly pomohou vývojářům snáze implementovat knihovnu do celku.
Nevýhodou takového „defenzivního” přístupu k vývoji je však nižší výkon, vzhledem k množství
duplicitních, a tedy veskrze nadbytečných kontrol. A právě tento neduh řeší vestavěná PHP funkce
assert
,
která dokáže vykonat doprovodné kontroly a v případě produkčního prostředí s direktivou
zend.assertions = -1
je z kódu naopak zcela vynechat. A pokud by bylo potřeba,
je možné pouhou změnou konfigurace zapnout zpět doprovodné kontroly. Výsledný kód je pak nápomocný
pro programátora, a přitom stejně rychlý v produkčním prostředí.
Příklad použití a bližší popis je součástí dokumentace balíčku interitty/utils
.
Validace práce se soubory a složkami
Již zmíněný nástroj Nette\Utils\Validator
umožňuje množství praktických kontrol včetně částečné práce se soubory a složkami. Knihovna
interitty/utils
doplňuje chybějící kontroly
is_readable
,
is_writable
a is_executable
.
Příklad použití a bližší popis je součástí dokumentace balíčku interitty/utils
.
Kolekce
Jednou z často využívaných datových struktur je takzvaná „kolekce“ umožňující uchovávat v sobě data určitého typu. Součástí knihovny
interitty/utils
je třída
Interitty\Iterators\Collection
implementující tuto funkcionalitu.
Vedle běžné deklarace datového typu je možné použít detailnější validaci. Objekt při své manipulaci automaticky počítá množství vložených prvků, tedy dotaz na počet nevyžaduje dodatečný výpočetní výkon ani při velkých objemech.
Příklad použití a bližší popis je součástí dokumentace balíčku interitty/utils
.
Datum a čas
Prakticky jediný rozumný způsob práce s datem a časem je pomocí objektu třídy
DateTime
.
Aby vše fungovalo opravdu správně, je potřeba aby byl nastaven včetně časové zóny, tedy pomocí
DateTimeZone
.
O to se mimo jiné stará Nette\Utils\DateTime
.
Ve světě jazyka PHP je však ještě jedno téma, které
s datem a časem souvisí, a tím je populární standard ISO 8601. Ten se využívá především na poli integrací a API vrstev, ale i když se jedná o „standard“,
umožňuje obrovské množství variant zápisu.
Součástí knihovny interitty/utils
jsou třídy
Interitty\Utils\DateTime
a Interitty\Utils\DateTimeFactory
, které přináší velmi širokou podporu tohoto standardu.
Příklad použití a bližší popis je součástí dokumentace balíčku interitty/utils
.