Proč PHP stále patří k pilířům webu
PHP je dynamický skriptovací jazyk navržený primárně pro web. Díky jednoduchému nasazení, obrovskému ekosystému knihoven a vyzrálé infrastruktuře hostingu pohání miliony aplikací od malých webů po komplexní platformy. Moderní PHP staví na kompilaci do bytecode, optimalizacích JIT/OPcache, silném typovém systému s type hints, enums a attributes, a nabízí robustní nástroje pro bezpečnost, testování i škálování.
Architektura běhu: web server, PHP-FPM a runtime
Typické produkční nasazení využívá Nginx/Apache před PHP-FPM (FastCGI Process Manager). Web server přijímá HTTP požadavky, deleguje je FPM poolu procesů a výsledný HTML/JSON vrací klientovi. Alternativou je „dlouho běžící“ server (Swoole, RoadRunner), kde PHP drží stav aplikace v paměti a snižuje režii opakovaných inicializací. Volba runtime ovlivňuje latenci, propustnost, možnosti WebSocketů i integraci s event-loopem (ReactPHP, Amp).
Výkonové stavebnice: OPcache, JIT, cache a session storage
OPcache ukládá zkompilované skripty v paměti a dramaticky redukuje time-to-first-byte. JIT přidává optimalizace na úrovni CPU instrukcí u vybraných výpočtově náročných úloh. Aplikační cache (Redis/Memcached) zrychluje čtení často používaných dat a omezuje přístupy do DB. Sdílená úložiště pro session (Redis, databáze) umožňují horizontální škálování bez „lepivých“ spojení.
Composer a ekosystém balíčků
Composer je standardní správce závislostí. Definuje verze v composer.json, řeší semver, autoloading (PSR-4) a poskytuje skriptovací háky. Packagist je centrální registr balíčků. Díky němu je jednoduché přidat HTTP klienty, ORM, šablonovací enginy, DI kontejnery či integrační konektory. Zamykací soubor composer.lock fixuje přesné verze pro reprodukovatelné buildy.
PSR standardy: společný jazyk frameworků
PHP-FIG definuje PSR doporučení, která zvyšují interoperabilitu: PSR-1/12 (styl a základy), PSR-3 (logování), PSR-4 (autoloading), PSR-6/16 (cache), PSR-7 (HTTP messages), PSR-11 (container), PSR-14 (eventy), PSR-15 (middleware), PSR-17 (HTTP factories) a PSR-18 (HTTP klient). Frameworky a knihovny, které PSR respektují, lze flexibilně kombinovat.
Co je webový framework a proč ho používat
Framework poskytuje kostru aplikace: směrování (routing), kontrolery, validace, šablony, ORM/DB vrstvu, DI kontejner, middleware, autentizaci/autorizaci, práci s frontami, e-mailem a úložištěm. Zrychluje vývoj, sjednocuje vzory a snižuje riziko chyb. Důraz je na testovatelnost, bezpečnost a provozní stabilitu.
Hlavní typy PHP frameworků
Existují „full-stack“ frameworky se vším v balíku (Laravel, Symfony, Nette, Laminas) a „micro“ frameworky pro minimalistická API (Slim, Lumen, Mezzio). Full-stack přináší pohodlí a integrace, micro přístup zase svobodu a menší režii. Volba závisí na doméně, týmu a nenasazených požadavcích (SLA, škálování, time-to-market).
Laravel: produktivita a ekosystém
Laravel sází na elegantní syntaxi a bohatý ekosystém: Eloquent ORM, Blade šablony, Artisan CLI, migrační systém, fronty (Horizon), plánovač (Scheduler), Broadcast (WebSockety), Cashier (platby), Scout (fulltext), Passport/Sanctum (API auth), Octane (Swoole/RoadRunner), Livewire a Inertia pro rychlé UI. Vhodný pro aplikace, kde je produktivita a konzistence nad architektonickým minimalismem.
Symfony: stavebnice komponent a enterprise integrace
Symfony je sada robustních komponent (HttpFoundation, Console, Messenger, Workflow, Security), které tvoří základ i pro jiné frameworky. Je ideální pro enterprise scénáře, kde oceníte granularitu, přísnou konfiguraci, bohaté integrace (API Platform, Messenger s AMQP/Redis), bundles a dlouhodobou stabilitu.
Nette: bezpečnost, Latte šablony a čistá architektura
Nette klade důraz na bezpečnost (automatické escapování, ochrana proti XSS/CSRF), přehlednou architekturu a produktivní šablonovací engine Latte. Nabízí Tracy pro debug, DI kontejner s kompilací do PHP a Forms s validací. Je oblíbené v regionech střední Evropy pro kombinaci jednoduchosti a důrazu na kvalitu kódu.
Laminas a Mezzio: následovníci Zend Frameworku
Laminas pokračuje v odkazu Zend Frameworku. Mezzio (dříve Expressive) staví na PSR-7/15 middleware přístupu a umožňuje skládat aplikace z komponent s vysokou mírou kontroly nad HTTP vrstvou, ideální pro API-first a integrační projekty.
Slim a mikroframeworky: minimalistické API
Slim je lehký HTTP router s middleware, vhodný pro mikroslužby, prototypy a služby s nízkou latencí. Díky PSR kompatibilitě snadno přidáte DI, šablony, validaci nebo ORM dle potřeby. Minimalisté oceňují transparentní „skládání“ bez skrytého kouzlení.
Architektonické vzory: MVC, ADR, hexagonální a CQRS
MVC odděluje model, view a controller. ADR (Action-Domain-Responder) lépe reflektuje HTTP request/response životní cyklus. Hexagonální/clean architektura izoluje doménu od frameworku a infrastruktury. CQRS odděluje čtení a zápis; v PHP se kombinuje s event sourcingem a message bus (Symfony Messenger, pro command/event handlery).
Databáze a perzistence: ORM, query buildry a migrace
Nejčastější přístup je ORM (Eloquent, Doctrine) pro mapování objektů na tabulky a práci s relacemi. Alternativou jsou query buildry (DBAL, Laravel Query Builder) nebo čisté SQL pro maximální kontrolu. Migrace a seedy verují schéma a data. Pro NoSQL se používají klienti pro Redis, MongoDB, Elasticsearch a time-series úložiště.
Validace, serializace a DTO
Validace vstupů chrání aplikaci i databázi. Formální validátory (Symfony Validator, Nette Forms pravidla) nebo atributy na DTO třídách zjednodušují automatické kontroly. Serializace (Symfony Serializer, json_encode s bezpečnými flagy) zajišťuje transformaci doménových objektů na veřejné API kontrakty.
Šablonování a server-side rendering
Blade (Laravel), Latte (Nette) a Twig (Symfony) poskytují bezpečný templating s automatickým escapováním a komponentovým přístupem. SSR je stále důležité pro SEO, rychlý first paint a přístupnost. Integrace s Vite/Webpackem řeší asset pipeline, cache-bust a moderní ES moduly.
API-first: REST, GraphQL a HATEOAS
REST je standard pro JSON API s verzováním, stránkováním a HAL/JSON:API konvencemi. GraphQL poskytuje flexibilní dotazování a agregace; v PHP existují servery a knihovny (např. nad Symfony). Middleware řeší CORS, rate limiting a obsahové vyjednávání. Důležité je jasné schéma, kontrakty a zpětně kompatibilní evoluce.
Bezpečnost: od vstupu po hlavičky
Bezpečnostní vrstvy zahrnují CSRF ochranu, správné escapování (HTML, URL, JS, atributy), prepared statements proti SQLi, limit velikosti uploadů a validace MIME/rozšíření. Cookies nastavujte s HttpOnly, Secure a SameSite. Obsahové zásady (CSP), HSTS a omezení iframů (X-Frame-Options) chrání prohlížeč. Pozor na SSRF přes neověřená URL, a na mass assignment v ORM.
Autentizace a autorizace
Systémy poskytují guardy, providery a role/permission modely. OAuth 2.0/OIDC se používá pro delegovanou identitu, JWT/opaque tokeny pro API. Dvoufaktor (TOTP/WebAuthn) posiluje ochranu účtů. Na straně serveru ukládejte hesla s Argon2/BCrypt a používejte password_needs_rehash pro migrační cykly.
Testování a kvalita kódu
Jednotkové a integrační testy se píší v PHPUnit či Pest. Funkční testy využívají HTTP klienty a in-memory DB. Statická analýza (PHPStan, Psalm) hlídá typy a edge případy. CS fixery (PHP-CS-Fixer, Codesniffer) drží styl. Contract testy a snapshoty brání regresím v API.
Logging, monitoring a observabilita
Monolog je de-facto standard pro logování s handlery pro soubory, syslog, cloud služby a strukturované JSON. Metriky (Prometheus) a tracing (OpenTelemetry) dávají přehled o latencích, chybovosti a závislostech. Korelační ID a MDC/CLS pomáhají sledovat požadavky napříč službami.
Fronty, plánování a asynchronní zpracování
Fronty (Redis, RabbitMQ, SQS) oddělují uživatelské požadavky od náročných úloh (render PDF, odeslání e-mailu, integrace). Pracovníci (workers) zajišťují retry s backoffem a deduplikaci. Plánovače (cron, framework scheduler) spouští úlohy v čase. Event-driven architektura škáluje a snižuje vazby.
Konfigurace, tajemství a prostředí
Konfigurace v .env patří mimo repozitář. Tajemství ukládejte do vaultů. Rozdělte environmenty (dev/test/stage/prod), zapněte display_errors jen v dev, produkci logujte a sledujte. Immutable buildy a 12-factor principy usnadní CI/CD.
Nasazení, kontejnery a škálování
Standardem je Nginx + PHP-FPM v kontejneru s multistage buildem. Reverzní proxy (Traefik, Nginx) řeší TLS a směrování. Horizontální škálování orchestruje Kubernetes/Swarm; požadavky jsou stateless, session a cache v externích službách. Rolling/blue-green deployment minimalizuje výpadky, health-checky brání zařazení nefunkčních instancí do poolu.
Migrace a životní cyklus aplikace
Databázové migrace a seedování musí být součást CI/CD. Při přechodu mezi major verzemi knihoven využijte deprecation logy a rector pro automatizované refaktory. Sledujte LTS verze frameworků, plánujte aktualizace PHP runtime a nezanedbávejte kompatibilitu rozšíření (ext-intl, ext-gd, ext-swoole apod.).
Doménový návrh a modularita
Oddělte doménovou logiku od frameworku. Vytvářejte moduly/bounded contexts s vlastním API a datovým modelem. V úložištích skrývejte detaily perzistence, do domény injektujte rozhraní. Minimalizujte „God services“, preferujte malé, zaměřené use-case třídy. Testy domény jsou rychlé a stabilní, protože běží bez infrastruktury.
Dokumentace a DX (developer experience)
Popište API přes OpenAPI/Swagger, generujte klienty a contract testy. V repozitáři udržujte README, CONTRIBUTING, Makefile nebo Composer skripty pro běžné úlohy. Lokální vývoj usnadní docker-compose s DB, cache a mailcatcherem. Rychlý onboarding šetří desítky hodin při rozšiřování týmu.
Časté anti-patterny a jak se jim vyhnout
Nepřenášejte RDBMS schéma „1:1“ do ORM bez ohledu na use-case; řešte N+1 dotazy přes eager loading a indexy. Nepište business logiku do controllerů; přesunujte ji do doménových služeb. Neignorujte chybové stavy v I/O, používejte výjimky nebo result typy. Nezáviste na globálních stavech; preferujte čisté závislosti a DI.
Kdy zvolit který framework
Pro rychlé produktové doručování a bohatý ekosystém zvažte Laravel. Pro enterprise a modulární komponenty s dlouhodobou stabilitou sáhněte po Symfony. Pro aplikace s důrazem na bezpečnost šablon a ergonomii UI je vhodné Nette. Pro minimalistická API vyhoví Slim/Mezzio. Důležitější než „značka“ je ale disciplinovaný návrh, testy a provozní praxe.
Závěr
Moderní PHP a jeho frameworky nabízejí vyspělou platformu pro budování udržitelných a výkonných webových služeb. S respektem k PSR standardům, důrazem na bezpečnost, testování a observabilitu, a s promyšlenou architekturou aplikace dosáhnete vysoké kvality bez ohledu na to, zda stavíte e-shop, interní systém, veřejné API nebo složitý portál. Klíčové je myslet na škálování, provoz a vývojářskou ergonomii už při prvních řádcích kódu.