Skip to main content
ZPage Lab
PHP 8.5 · Released Nov 20, 2025

Build with better flow.

Meet PHP 8.5: more expressive pipelines, stronger URI handling, cleaner object cloning, and thoughtful developer ergonomics. Explore it inside a responsive, accessibility-first ZSS interface.

Explore features Try the workbench
// New: readable left-to-right pipelines
$headline = '  PHP 8.5 Released  '
  |> trim(...)
  |> (fn($s) => str_replace(' ', '-', $s))
  |> strtolower(...);

echo $headline;
// php-8.5-released
✓ Syntax shown is PHP 8.5-specific · Zero dependencies

Language evolution

Four improvements worth exploring.

Server-rendered, indexable content. Each card is a stable ZSS component with its own region, parts, and instance ID.

Pipe operator |>

Express data transformations left to right with single-argument callables.

Read more ↗

URI extension

Parse and work with URLs through built-in RFC 3986 and WHATWG-aware APIs.

Read more ↗

Clone with

Copy an object while replacing selected properties—even in readonly value objects.

Read more ↗

#[NoDiscard]

Warn when important function return values are accidentally ignored.

Read more ↗

ZSS workbench

One root. Every component.

Change the display preferences, navigate the accessible tabs, and ping the PHP JSON endpoint. All visuals inherit semantic CSS tokens.

Workbench topic tabs

Semantic composition, not brittle selectors.

The ZSS hierarchy is Hook → Block → Region → Component → Part. A single palette change updates the page, cards, buttons, borders, focus rings, code decoration, and surfaces together.

  • data-z-block defines a major page area.
  • data-z-component defines a reusable building unit.
  • data-z-part addresses protected internal structure.
  • data-jss opts into behavior without coupling it to CSS.

PHP compiles the allowed JSON tokens.

Any component using var(--z-primary) updates without knowing which theme or vision profile is active.

:root {
  --z-space-unit: .25rem;
  --z-s4: calc(var(--z-space-unit) * 4);
  --z-radius-card: 1.5rem;
  --z-primary: #2449BC;
}

[data-z-component="button"] {
  background: var(--z-primary);
  color: var(--z-on-primary);
  border-radius: var(--z-radius-control);
}

Keyboard and assistive technology first.

These tabs use the WAI-ARIA tabs pattern when JavaScript is available. Without JavaScript, their links simply navigate to visible content sections.

  • Tab reaches the active tab, then its panel.
  • ← / → changes tabs; Home / End jump to the first / last tab.
  • Enter / Space activate a focused tab.
  • Focus rings, a skip link, reduced motion, clear labels, and OS forced-colors support are included.

Inclusive by design

Accessible from the foundation.

Semantic landmarks, descriptive links, one H1, keyboard focus, screen-reader names and states, a skip link, adaptable motion and contrast, and color-independent signals are deliberate page contracts—not last-minute patches.

What keys do the workbench tabs support?

Tab enters and leaves the widget; Left and Right Arrow change tabs; Home and End jump to the first and last tab; Enter and Space activate a tab. Native selects use their normal platform keyboard behavior.

Design intent is WCAG 2.2 AA-oriented; color presets alone do not establish conformance. Audit every final theme combination, browser, assistive technology, and content change before making a compliance claim.