Page MenuHomePhorge

Fix some PHP 8.1 "strlen(null)" exceptions on Differential Revision page
ClosedPublic

Authored by aklapper on May 30 2023, 11:05.

Details

Summary

strlen() was used in Phabricator to check if a generic value is a non-empty string.
This behavior is deprecated since PHP 8.1. Phorge adopts phutil_nonempty_string() as a replacement.

Note: this may highlight other absurd input values that might be worth correcting
instead of just ignoring. If phutil_nonempty_string() throws an exception in your
instance, report it to Phorge to evaluate and fix that specific corner case.

EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261]
arcanist(head=master, ref.master=18554ea76ceb), phorge(head=diff3, ref.master=e11c5486c92b, ref.diff3=e11c5486c92b)
  #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/src/applications/differential/customfield/DifferentialBranchField.php:42]

Closes T15432

Test Plan

After applying these three changes (on top of D25262 and D25263), there is no strlen() related exception displayed on /D1/ anymore, however there are further exceptions to be sorted out in other tasks.

Diff Detail

Repository
rP Phorge
Branch
diff3 (branched from master)
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 487
Build 487: arc lint + arc unit

Event Timeline

speck requested changes to this revision.Jun 8 2023, 00:34
speck added inline comments.
src/applications/differential/customfield/DifferentialBranchField.php
39–46

Please see this simplified suggested change

This revision now requires changes to proceed.Jun 8 2023, 00:34

Simplify changes as proposed by speck

This revision is now accepted and ready to land.Jun 8 2023, 11:08