Slovník pojmů

Framework

Framework řídí hlavní tok aplikace a volá kód aplikace v určených bodech. Nejde o programovací jazyk, hotový produkt ani automatickou záruku dobré architektury.

Stručná definice

Konvence a životní cyklus aplikace na společném základu.

Framework poskytuje strukturu pro opakující se problémy: routing, vytvoření controlleru nebo presenteru, dependency injection, konfiguraci, validaci, formuláře, bezpečnostní integraci či návrat HTTP odpovědi. Díky tomu tým nezačíná každou aplikaci stejnou infrastrukturní vrstvou od nuly.

Zásadní rozdíl vůči knihovně je inversion of control. Aplikace obvykle přímo zavolá knihovnu; framework řídí životní cyklus a v odpovídající chvíli zavolá kód aplikace. Hranice nemusí být absolutní – například Symfony poskytuje celý framework i samostatně použitelné komponenty.

Jaký problém řeší

Dává týmu opakovatelný způsob stavby aplikace

Framework je užitečný tam, kde aplikace dlouhodobě řeší HTTP, data, bezpečnost a vývoj více funkcí.

  • routing URL na controller nebo presenter
  • vytváření a konfiguraci služeb přes dependency injection
  • validaci vstupů, formuláře a chybové odpovědi
  • bezpečnostní komponenty, konzolové příkazy a databázové integrace
  • konvence pro testy, balíčky, konfiguraci a rozšiřování aplikace

Praktický příklad

Framework koordinuje vstup, služba drží pravidlo objednávky

V administraci vede route pro zrušení objednávky do controlleru nebo presenteru. Ten přečte request, ověří uživatelský kontext a předá záměr aplikační službě. Služba rozhodne, zda lze objednávku zrušit, a vrátí výsledek, který framework převede na HTML nebo JSON odpověď.

Business pravidlo nemá být automaticky napsané v controlleru, modelu ORM ani jobu jen proto, že to framework usnadňuje. Framework koordinuje běh; hranice domény a aplikace jsou samostatné návrhové rozhodnutí.

HTTP request
  → routing
  → controller / presenter
  → aplikační služba
  → HTTP response

Jak funguje

Od requestu ke kódu aplikace a zpět

Zjednodušený flow platí pro běžnou HTTP aplikaci; konkrétní názvy se mezi frameworky liší.

  1. Vstup do frameworku Webový server předá request aplikaci a framework založí potřebný kontext.
  2. Routing Framework vyhodnotí URL a metodu a zvolí controller, presenter nebo jiný obslužný bod.
  3. Služby a middleware Container poskytne závislosti, middleware či posluchače mohou řešit společné technické kroky.
  4. Aplikační pravidlo Kód aplikace pracuje s daty a pravidly; controller má koordinovat vstup a výstup, ne pohltit celý proces.
  5. Response Framework sestaví HTML, JSON, redirect nebo jiný výsledek a vrátí jej webovému serveru.

Důležité části

Framework usnadňuje opakované technické vzory.

Nevynucuje však sám správné hranice businessové logiky.

Routing a lifecycle

Směruje HTTP request do aplikace a určuje, ve kterém okamžiku se vykoná vlastní kód.

Dependency injection

Container vytváří služby a jejich závislosti. Neznamená, že každá třída potřebuje rozhraní nebo abstrakci.

Konfigurace a rozšiřitelnost

Konvence zrychlují zavedení běžných funkcí. Pluginy a balíčky však přidávají závislosti, které je nutné udržovat.

Bezpečnostní a datové integrace

Framework může nabídnout nástroje pro validaci, CSRF, session nebo databázi, ale správné použití zůstává na aplikaci.

Komponenty

Některé části frameworku lze použít samostatně. To neznamená, že každá aplikace potřebuje celý framework.

Vztah k podobným pojmům

Framework není jazyk, CMS ani hotová architektura.

Rozdíly pomáhají vybrat přiměřenou míru infrastruktury.

Knihovna
Knihovna řeší konkrétní funkci a volá ji aplikace. Framework obvykle volá aplikační kód.
Programovací jazyk
Jazyk určuje zápis a runtime kódu; framework je nadstavba s konvencemi a nástroji.
CMS
CMS je hotovější produkt pro správu obsahu. Framework je stavební základ, nikoli nasaditelná aplikace pro konkrétní účel.
Architektura
Framework nabízí technickou strukturu; architektura určuje odpovědnosti a závislosti konkrétní aplikace.

Výhody a omezení

Konvence šetří práci, ale vytvářejí závazek k ekosystému.

Přínosy

  • sjednocený způsob práce s HTTP, službami a konfigurací
  • využití udržovaných komponent místo vlastního opakování infrastruktury
  • rychlejší onboarding a čitelnější struktura pro tým
  • integrace testů, konzolových úloh a bezpečnostních postupů

Časté chyby

  • považovat framework za náhradu znalosti PHP, HTTP a databází
  • psát veškerou logiku do controllerů, modelů či jobů
  • záviset na frameworkových třídách i v jádru doménových pravidel
  • nasadit robustní framework na izolovaný skript bez dlouhodobého důvodu

Kdy dává smysl

Pro dlouhodobě rozvíjené aplikace s opakující se infrastrukturou.

Symfony, Laravel a Nette se hodí pro různé týmy a existující projekty. Nelze je seřadit od nejlepšího k nejhoršímu; rozhoduje produkt, zkušenost týmu, potřebné integrace, údržba i zvolený styl práce.

Malý skript nebo úzce vymezená úloha může vystačit s několika knihovnami. Ve chvíli, kdy aplikace řeší HTTP, data, oprávnění, konfiguraci a více funkcí, se společná struktura frameworku obvykle vyplatí.

Na co myslet

Framework má podporovat jednoduchý kód, ne skrývat složitost.

Volba frameworku je začátek údržby, nikoli jednorázové rozhodnutí.

  • držet controller nebo presenter u koordinace vstupu a výstupu
  • oddělit stabilní business pravidla od zbytečné vazby na framework
  • aktualizovat framework a jeho závislosti řízeně s testy
  • využívat bezpečnostní komponenty, ale ověřit jejich konkrétní konfiguraci
  • volit míru abstrakce podle složitosti aplikace

Časté otázky

Framework bez zbytečných zkratek

Jaký je rozdíl mezi frameworkem a knihovnou?

Aplikace obvykle volá knihovnu. Framework řídí hlavní tok aplikace a volá kód aplikace v určených bodech.

Je Symfony framework, nebo knihovna komponent?

Obojí: Symfony nabízí celý framework a také samostatně použitelné Components. Záleží, jakou část ekosystému projekt používá.

Je Laravel nebo Nette lepší framework?

Neexistuje univerzální pořadí. Rozhodují potřeby projektu, tým, existující systém, ekosystém a dlouhodobá údržba.

Zaručí framework čistou architekturu?

Ne. Pomáhá s technickou strukturou, ale odpovědnosti, závislosti a business pravidla musí navrhnout tým.

Jak pracuji s PHP v praxi

Framework používám jako oporu pro udržitelný backend.

V aktuálních PHP projektech stavím na Symfony a jeho ekosystému, vždy s ohledem na přiměřenou architekturu konkrétní aplikace.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.