Kam se posunulo moderní PHP
PHP se v posledních letech zásadně proměnilo. Od verze 7 a zejména v řadě 8.x přineslo výrazný nárůst výkonu (JIT, optimalizace opkódu), robustnější typový systém (unijní a průnikové typy, readonly, never), atributy (anotace na úrovni jazyka), vylepšené chyby a výjimky a bohatý ekosystém nástrojů. Moderní vývoj webových aplikací v PHP dnes stojí na standardech PHP-FIG (PSR), balíčkování přes Composer, kvalitním testování a automatizaci v CI/CD. Výsledkem jsou udržovatelné, škálovatelné a bezpečné systémy, které obstojí i ve světě mikro- a makro-služeb, cloudu a vysoké zátěže.
Jazykové novinky PHP 8.x, které mění praxi
- Typový systém: unijní typy (
function f(int|string $x)), mixed, static, never, true/false jako samostatné typy, nullable (?T), readonly vlastnosti a enumerace (PHP 8.1). - Atributy: nahradily potřebu doktrinálních anotací v komentářích – např.
#[Route('/orders')],#[ORM\Entity]. - Match výraz, konstrukce constructor property promotion, named arguments a nullsafe operátor: zpřehledňují kód, snižují boilerplate.
- Výkon: JIT pro některé výpočetně náročné úlohy, výrazně rychlejší engine oproti PHP 5.x/7.0, OPCache preloading.
- Fibers (8.1): zjednodušují kooperativní multitasking a asynchronní práci v knihovnách typu AMPHP/Swoole.
Standardy PHP-FIG a PSR: lepidlo ekosystému
- PSR-1/PSR-12: základní a rozšířené kodérské standardy, na nichž staví nástroje jako PHP-CS-Fixer.
- PSR-4: autoloading tříd; základ Composeru a modulárních aplikací.
- PSR-3: logovací rozhraní (Monolog jako referenční implementace).
- PSR-6/PSR-16: caching pool a jednoduché cache API (typicky Redis/Memcached).
- PSR-7/PSR-17/PSR-18: HTTP message interface, factory a klient; kompatibilita mezi knihovnami (Guzzle, HTTPlug, Symfony HttpClient bridge).
- PSR-11: kontejner na závislosti (DI); interoperabilita mezi frameworky.
- PSR-14/PSR-15: event dispatcher a middleware pro HTTP požadavky.
Composer, balíčky a správa závislostí
Composer je dnes standard. Definuje závislosti v composer.json, řeší semver, autoloading a post-skripty. Doporučené postupy: uzamknout verze pomocí composer.lock, používat prefer-stable, oddělit require vs. require-dev, auditovat závislosti (composer audit) a pravidelně aktualizovat s CI kontrolou regresí.
Frameworky a architektonické styly
- Symfony: modulární, enterprise přístup, komponenty (Console, HttpFoundation, Messenger), Flex recepty, service container a autowiring.
- Laravel: „developer-experience“ (DX), Eloquent ORM, Blade, Horizon/Scout/Octane, jednoduché scaffolding, silná komunita.
- Nette: robustní DI, bezpečné šablony Latte, Tracy pro ladění, Presenter/Signals architektura; oblíbené v CZ/SK.
- Micro-frameworky: Slim, Lumen, Mezzio – API-first, PSR-15 middleware, skvělý základ pro služby.
- Architektury: hexagonální (ports & adapters), DDD, CQRS/ES; oddělení domény od frameworku zvyšuje udržovatelnost.
Datová vrstva: ORM, DBAL a migrace
- Přístup: PDO jako základ; Doctrine DBAL pro abstrakci, Doctrine ORM / Eloquent pro objektovou mapu, Cycle ORM pro datové mapování.
- Migrace: verzování schématu (Doctrine Migrations, Laravel Migrations, Phinx), rollback/seed scénáře.
- Optimalizace: read/write separace, connection pool (PDO persistent s rozvahou), indexy, analyzátory dotazů, lazy vs. eager loading (N+1 guardy).
Asynchronní PHP, realtime a joby
- Async: AMPHP, ReactPHP, Swoole; fibers pro čitelný konkurenční kód, dlouho běžící pracovníci (RoadRunner/Octane).
- Fronty a eventy: RabbitMQ, Redis Streams, Kafka; Symfony Messenger/Laravel Queue jako abstrakce; outbox pattern pro spolehlivost.
- Realtime: WebSockety (Ratchet, Swoole), Server-Sent Events, Mercure hub; škálování přes pub/sub (Redis, NATS).
Bezpečnost: od OWASP Top 10 k bezpečnému nasazení
- Vstupy a výstupy: kontextové escapování v šablonách (Latte/Blade/Twig), parametrizované dotazy, validace na hranách systému.
- Autentizace a autorizační toky: session cookies (HttpOnly, Secure, SameSite=Lax/Strict), JWT pouze pro API a s krátkou životností; OAuth 2.0/OIDC pro federaci.
- CSRF: tokeny s dvojím odesláním, rámcové ochrany; CORS s principem least privilege.
- Tajemství a konfigurace:
.envpouze pro vývoj; v produkci tajemství v trezoru (Vault, AWS Secrets Manager), rotace klíčů. - Runtime: restriktivní
open_basedir(dle potřeby),disable_functionss rozmyslem, read-only kontejnerové image, aktualizovaný FPM a rozšíření.
Šablony a prezentace: Twig, Blade, Latte a moderní přístupy
- Šablonovací motory: auto-escape, makra/komponenty, dědičnost layoutů, partialy a slots.
- Interaktivita: Inertia.js/Livewire/HTMX pro postupnou interaktivitu bez plné SPA; pro SPA integraci API (REST/GraphQL) a SSR/hydrataci.
- I18n/L10n: ICU MessageFormat, pluralizace,
<time>a správná časová pásma (DateTimeImmutable).
Testování: pyramida kvality
- Jednotkové testy: PHPUnit, Pest – rychlé, izolované, deterministické.
- Integrační a kontraktní testy: Testcontainers pro DB/kafku/rabbit, smluvní testy pro API (OpenAPI/Schema, Pact).
- End-to-End: Symfony Panther, Laravel Dusk, Codeception; simulace prohlížeče a uživatelských scénářů.
- Static-analysis a kvalita: PHPStan/Psalm (max level postupně), PHP-CS-Fixer, Rector pro refaktoring, Deptrac pro hlídání závislostí.
Observabilita a ladění výkonu
- Profiling: Xdebug (profilování/trace), Blackfire/Tideways pro produkční vhledy bez velké režie.
- Logování a metriky: Monolog (PSR-3), strukturované logy (JSON), metriky (Prometheus + exporter), trasování (OpenTelemetry).
- Cache vrstvy: OPCache (preload), aplikační cache (PSR-6/16), HTTP cache (ETag/Last-Modified), CDN; invalidace pomocí cache tags.
Nasazení: FPM, worker model a alternativní běhová prostředí
- PHP-FPM + Nginx/Apache: standardní setup; správné pm nastavení (dynamic/ondemand), rozumný max_children dle paměti, max_request pro recyklaci.
- RoadRunner/Swoole/Octane: dlouho běžící procesy s minimalizací bootstrapu; pozor na state leakage a thread-safety rozšíření.
- Serverless: Bref (AWS Lambda) pro elastické API/tasky; start-up optimalizace a studené starty.
Architektura API a integrační vrstvy
- REST: zdrojově orientované návrhy,
ETag,PATCH, robustní kódování chyb (RFC 7807), idempotence. - GraphQL: schémata, resolverové vrstvy, per-request autorizace, persisted queries, dataloader pro N+1.
- RPC/Message-driven: gRPC (přes sidecar), AMQP/Kafka – eventual consistency a SAGA orchestrace.
Doménová modelace a udržovatelnost
- DDD building blocks: agregáty, hodnotové objekty, doménové události; oddělené application/domain/infrastructure vrstvy.
- Modularita: monorepo vs. polyrepo; bounded contexts, stabilní API mezi moduly, PSR-4 namespacy.
- Migrace starého kódu: strangler pattern, anti-corruption layer, postupný přechod s pokrytím testy a Rector.
DevOps, CI/CD a infrastruktura jako kód
- CI: GitHub Actions/GitLab CI – build, statická analýza, testy, bezpečnostní audit, artefakty.
- Docker a obrazy: multi-stage build, distroless/alpine s opatrností (glibc vs. musl), read-only filesystem, non-root user.
- CD: canary/blue-green, feature flags, migrace DB s zero-downtime (online DDL, gh-ost/pt-osc pro MySQL).
- IaC: Terraform/Pulumi, deklarativní konfigurace (Helm/Kustomize), tajemství přes Secret manager.
Front-end integrace a renderovací strategie
- SSR/CSR/ISR: volba dle potřeby SEO, personalizace a latence; edge-rendering přes CDN worker (např. Vercel/Cloudflare) v kombinaci s PHP backendem.
- Asset pipeline: Vite/ESBuild, HTTP/2 push (opatrně), preload/defer skriptů a kritické CSS.
Práce s daty a soubory
- Uploady: streamované zpracování, antivirová kontrola, S3 kompatibilní úložiště, podpisy URL a expirace.
- Exporty: generování CSV/XLSX jako streamy, fronty pro těžké reporty, notifikace po dokončení.
Výkonnostní antipatterny a jak se jim vyhnout
- Neřízené N+1 dotazy – používat eager loading a explicitní selekce.
- Příliš „tlusté“ kontrolery – business logika patří do služby nebo domény.
- Neexistující cache strategie – definovat TTL, invalidaci a klíčování; měřit zásahovost (hit ratio).
- Bootstrap při každém requestu – u Octane/RoadRunner oddělit request-scoped stav, vyvarovat se singletons s globálním stavem.
Monitoring dostupnosti a SLO
- SLA/SLO/SLI: definujte cíle a měřte latenci, chybovost a saturaci; alerting s rozumnými prahy.
- Runbooky: postupy pro incidenty, standardní operace (rollbacks, drain traffic), post-mortem bez hledání viníka.
Praktická doporučení pro moderní PHP projekty
- Začněte s jasnou architekturou (DDD/hexagon), oddělte doménu od frameworku.
- Vynucujte kvalitu v CI: PHPStan/Psalm, PHPUnit/Pest, PHP-CS-Fixer, Rector, Composer audit.
- Standardizujte konfiguraci: prostředí přes proměnné, tajemství v trezoru, immutable artefakty.
- Návrh API s kontrakty (OpenAPI/GraphQL schema) a kontraktními testy.
- Myslete na pozorovatelnost: strukturované logy, metriky, tracing a korelace požadavků.
- Bezpečnost jako kód: CSP, bezpečné cookies, rotace klíčů, pravidelné pen testy a threat modeling.
Závěr: PHP jako moderní platforma
Moderní PHP je vyspělá, rychlá a produktivní platforma pro vývoj webových i integračních aplikací. V kombinaci s PSR standardy, Composerem, současnými frameworky a osvědčenými architektonickými vzory umožňuje stavět systémy, které jsou bezpečné, škálovatelné a dobře udržovatelné. Klíčem k úspěchu je disciplína – testy, statická analýza, automatizace nasazení a průběžné sledování kvality a výkonu. S těmito principy může PHP spolehlivě pohánět jak startupové MVP, tak podnikové platformy s miliony uživatelů.