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_writableis_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 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.