Everything on php-8.6.
13 articles tagged php-8.6, sorted newest first.
PHP 8.6's Io\Poll: stream_select() Finally Gets a Replacement
PHP has shipped exactly one I/O multiplexing primitive for its entire life, and it was built on a syscall from 1983. PHP 8.6 finally adds a second one.
PHP 8.6 Changes What trim() Strips, and Your Validation Rules Might Notice
PHP 8.6 adds form feed to the default character list of trim() — the first change to that list in the language's history. Laravel's middleware already handled it. The validator did not.
ReflectionParameter::getDocComment(): PHP 8.6 Finally Reads Parameter Docs
PHP 8.6 lets you hang a doc comment on a single parameter and read it back with reflection. That kills the description you've been writing twice — once for humans, once for the machine.
Stop String-Concatenating URLs: PHP 8.6's UriBuilder
Every Laravel app has a method that bolts a path and a query onto a URL it did not generate, and it is always subtly wrong. PHP 8.6 finally gives the language a typed way to do it.
Enums That Explain Themselves: __debugInfo() in PHP 8.6
Dumping a status enum has always shown you name and value and nothing you actually wanted. PHP 8.6 lets enums declare __debugInfo(), and one method covers var_dump, dd() and Ray.
Syntax Error, Line 1: PHP 8.6 Finally Tells You Where Your JSON Broke
PHP 8.6 adds the line and column of the failure to every JSON error message. Here is how to wire that into a Laravel app so bad webhooks diagnose themselves.
PHP 8.6 Changes Your Session Defaults: What Breaks in a Laravel App
PHP 8.6 turns on session strict mode, HttpOnly and SameSite=Lax by default. Most Laravel apps shrug. Four specific integrations do not.
PHP 8.6's SortDirection Enum: Typed Sorting in Laravel Queries and Collections
PHP 8.6 adds a global SortDirection enum, and Laravel 13 already accepts it in orderBy() and sortBy(). Here is what it does, what it deliberately does not do, and the one validation gotcha that will bite you.
PHP 8.6's clamp(): Delete Your min(max()) Sandwiches
Every Laravel codebase has a min(max($perPage, 1), 100) somewhere, and at least one of them has the bounds backwards. PHP 8.6 gives you a function that can't be written wrong.
PHP 8.6 Readonly Property Defaults: Cleaner DTOs and Interface Properties in Laravel
PHP 8.6 lifts the four-year ban on default values for readonly properties. Here's what that changes for DTOs, interface properties and Laravel action classes.
Upgrading a Laravel App to PHP 8.6: Deprecations, Session Defaults and a CI Checklist
PHP 8.6 lands on 19 November 2026. Here's the ordered checklist I run on Laravel apps — CI first, deprecations second, production runtime last.
PHP 8.6's Time\Duration: No More Guessing Whether That Timeout Is Seconds or Milliseconds
PHP 8.6 ships Time\Duration, a nanosecond-precision value object for stopwatch time. Here's the whole API, where it beats DateInterval, and how to bolt it onto a Laravel app whose framework still wants ints.
PHP 8.6 Partial Function Application: Delete Half the Closures in Your Laravel App
PHP 8.6 lets you write str_replace(' ', '-', ?) and get a closure back. Here's what the ? and ... placeholders actually do, rewritten against real Laravel code, and where they bite.