Moderní PHP

Moderní PHP

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: .env pouze pro vývoj; v produkci tajemství v trezoru (Vault, AWS Secrets Manager), rotace klíčů.
  • Runtime: restriktivní open_basedir (dle potřeby), disable_functions s 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

  1. Začněte s jasnou architekturou (DDD/hexagon), oddělte doménu od frameworku.
  2. Vynucujte kvalitu v CI: PHPStan/Psalm, PHPUnit/Pest, PHP-CS-Fixer, Rector, Composer audit.
  3. Standardizujte konfiguraci: prostředí přes proměnné, tajemství v trezoru, immutable artefakty.
  4. Návrh API s kontrakty (OpenAPI/GraphQL schema) a kontraktními testy.
  5. Myslete na pozorovatelnost: strukturované logy, metriky, tracing a korelace požadavků.
  6. 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ů.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *