Re: Consensus on argument validation for built-in functions

From: Date: Tue, 11 Mar 2025 06:32:25 +0000
Subject: Re: Consensus on argument validation for built-in functions
References: 1  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On Monday, 10 March 2025 at 23:07, Jorg Sowa <[email protected]> wrote:

> Hello everyone,
>
> I’d like to align on the approach to validating arguments for built-in functions (usually for
> flag inputs). Some ongoing discussions in PRs:
> - https://github.com/php/php-src/pull/15647
> - https://github.com/php/php-src/pull/15883
> - https://github.com/php/php-src/pull/17859
>
> In some cases, changes introduced ValueError immediately in the next version, without a
> deprecation phase. To ensure a consistent approach, I propose the following:
>
> 1. Introduce a deprecation notice in the next minor version.
> 2. Raise a ValueError in the following minor version.
>
> If needed, I can create RFC, but as described by a few people in the discussions, we can avoid
> it having the consensus. What do you think?

My opinion on this topic is well known, validation errors should go straight to a ValueError.
And if not a ValueError then it should be an E_WARNING.
Raising a deprecation is frankly non-sensical.
Validation errors exist to inform the person programing that there is an error with the call site
that is preventable very easily.
If we start emitting E_DEPRECATED instead of E_WARNING/throwing a ValueError, we are incentivising
people to add throwing error handlers for E_DEPRECATED,
something that I (and I know others too) lament constantly, as a deprecation is not an error.

Best regards,

Gina P. Banyard

>


Thread (16 messages)

« previous php.internals (#126710) next »