PHP 8.4

PHP 8.4’s release prompts mixed reactions: many welcome performance tweaks, an HTML5-compliant DOM parser, new array and BCMath utilities, and especially property hooks that cut boilerplate getters/setters and improve library evolution. Others worry that features like hooks and more global `array_*` functions increase language “magic,” hurt readability, and risk name collisions in an already crowded global namespace, reinforcing a trend toward Java‑style complexity. Across comments, practitioners compare PHP to Python and JavaScript for web work, debate how quickly to adopt new versions in production, and reflect on PHP’s shift from a beginner-friendly scripting tool to a full-fledged, increasingly sophisticated platform.

Upgrade cadence and production use

  • Many report recent major versions as stable; upgrades done within weeks or months, sometimes even during RC phase with rollback plans.
  • Strategies vary: follow distro LTS (e.g., Debian), wait 6–12 months for Composer deps/tooling, or “skip one version” (upgrade to N when N+1 is out).
  • Some still run PHP 5 or 7.4 in production, often with third‑party extended security support; trade‑off is stability vs. new features and fixes.
  • Larger orgs emphasize long staging periods, log scanning, and waiting for ecosystem support (NewRelic, static analyzers, framework updates).

PHP vs. other web stacks

  • PHP praised for “upload files and go,” fast feedback loop, simple deployment for small apps, and strong standard library.
  • Counter‑argument: serious projects use CI, Composer, frameworks, and more complex deployment; 2000s‑style FTP workflows seen as niche.
  • Compared to Python/Django: Python wins on language design and packaging (despite complaints about pip/poetry), PHP on immediacy and HTTP tooling.
  • Framework debate: Laravel seen by some as powerful but “magical” and VC‑incentivized; others prefer Symfony or microframeworks like Slim.

New 8.4 features and reactions

  • Property hooks (C#/Swift‑style) are the headline: allow getter/setter logic on properties without changing call sites.
  • Supporters: dramatically reduces boilerplate getters/setters, improves library evolution, makes magic __get/__set code explicit and analyzable.
  • Skeptics: hidden control flow and IO in property access increase cognitive load; fear of abuse in ORMs/frameworks and harder debugging.
  • Clarified behavior: hooks access a “backing value” inside the hook, avoiding infinite recursion; behavior differs by context, which some call “too magical.”
  • New array_* functions (e.g., array_find) welcomed for ergonomics but criticized for polluting the global namespace and clashing with existing user functions.
  • Other liked additions: HTML5‑compliant DOM parser, BCMath objects, variable‑length regex lookbehind, performance improvements.

Language design, complexity, and philosophy

  • Some see PHP’s evolution as fixing past warts and adding pragmatic QoL features; others see it drifting toward Java‑style verbosity and bloated complexity.
  • Global namespace clutter and inconsistent function signatures are recurring complaints; defenders argue backward compatibility leaves little room to change.
  • Debate over “magic”: many frameworks already use dynamic properties and reflection; new features aim to regularize patterns at the language level.
  • There’s tension between PHP as a beginner‑friendly, quick‑and‑dirty scripting tool and as a “serious” enterprise backend with rich tooling.