Urgent.News

What's breaking now, across thousands of outlets.

Tech

This Week In PHP Internals | Sept 2, 2026

Hello world, it's Wednesday, September 2, 2026, and here's what happened This Week in PHP Internals. 11 stories this week, so let's get into it. But first, Is AI working for your team? You can measure the code it produces, but the number that matters is how much of it survives. Ballast reads your git history — never your code — and gives you stable velocity plus a durability score between 300 and…

Hello, it's Wednesday, September 2, 2026, and here's what happened This Week in PHP Internals. This week featured 11 stories, so let's dive in. First, we tackle AI's role in your team. You can measure the code it produces, but the crucial metric is how much of it survives. Ballast analyzes your git history—never your actual code—and provides a stability score between 300 and 850. Updated monthly, it's free at ballast.now.

Our top story begins with a rule most of us are unaware of. Luca Rodenhäuser kicked off Wednesday's discussion by stating in the scanner that defines a PHP identifier—measured in bytes, not characters. Any byte at or above hex 80 is accepted, meaning $x followed by a no-break space is considered a separate variable. He proposed a per-file declare to prevent this, scanning the 250 most-installed Packagist packages and finding one identifier that would break.

Rowan Tommins suggested skipping the opt-in and enforcing it in PHP 9, as Symfony has already addressed its one class, and 99.99% of developers wouldn't notice. Running the test against the top 5,000 packages, Luca discovered 1,447 non-ASCII identifiers, 91% of them in the math-php library, where variable names spell out the formula.

He concluded, "So the honest answer to '99.99% won't notice' is that one library would notice 888 times, and its author chose that style deliberately and has shipped it for years."

Next, three questions arose. Derick Rethans questioned the cost of 13.7 kilobytes of tables in every PHP process. Juliette Reinders Folmer inquired about the impact on variable variables, while Rowan Tommins wanted to understand how much of this proposal involves rejecting names versus normalizing them. Luca responded by splitting his proposal into three parts: a diagnostic, a well-formedness rule, and a conformance rule. He expressed the need for a problem statement.

On Thursday, Nick Sdot initiated an RFC to discontinue PHP's endorsement of PEAR. He began by reviewing all past discussions and unvoted attempts, creating a static mirror to keep the command-line tool functional. Nick argued that PEAR is broken, spammed, barely active, and now unmaintained. Rowan Tommins agreed, stating that if PEAR remains in its current state for ten years, it will continue to be exploited by spammers and potentially worse.

Nick provided statistics: 6 packages still publish to PEAR, 3 of which are PEAR's own infrastructure, 2 have been marked unmaintained, leaving one independent package, Net_SMTP, as the sole maintained package. He added a one-word comment, "legend," to the thread.

Sjoerd Langkemper proposed opening a vote to make the number-base functions in PHP throw an error on invalid input. His RFC aims to convert octdec, hexdec, bindec, and base_convert to throw a ValueError instead of using the Error hierarchy. Tim Düsterhus raised concerns about the substance, stating that the Error hierarchy should not be used for expected errors during normal program operation.

He directed Sjoerd to the coding standards policy section on throwables, which explicitly states that such exceptions should use the Exception hierarchy. Sepehr Mahmoudi questioned the distinction, mentioning it in the coding standards policy. The debate continued with Sjoerd seeking clarification on whether the distinction is documented.

The array-filtering function, covered last week, returned on Sunday, renamed array_str_contains and adjusted for PHP 8.7. Sepehr Mahmoudi argued against its inclusion, claiming it's common enough to warrant inclusion as a core function. Bruce Weirdan countered by questioning whether closure overhead should be addressed, suggesting that fixing the overhead would benefit all built-in functions accepting callables.

Kamil Tekiela inquired about performance, stating he'd never encountered this as a bottleneck. Sepehr then acknowledged his use of AI in drafting replies, prompting Weilin Du to request the thread to stop personalizing the discussion and focus on technical debate.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Sony Says PlayStation Users Don't Own Digital Games They Buy

Sony says PlayStation users only license digital games, not own them, as the company faces a lawsuit over its use of "buy" and "purchase."

  • Sony claims digital game purchasers don't own games they buy.
  • Plaintiffs argue Sony failed to clarify digital purchases are licenses, not ownership.
  • Sony denies allegations, emphasizing software license distinction.

More from Thursday 3 September →