El lun, 29 ago 2022 a las 11:26, Deleu (<deleu...@gmail.com>) escribió: > > > > On Mon, Aug 29, 2022 at 11:19 AM juan carlos morales > <dev.juan.mora...@gmail.com> wrote: >> >> El lun, 29 ago 2022 a las 11:06, Deleu (<deleu...@gmail.com>) escribió: >> > >> > Has the option of returning a Result object been discussed/considered? Can >> > it be an option? I imagine that if `json_validate(): JsonValidationResult` >> > always returns a `JsonValidationResult` which contains a `public readonly >> > bool $valid` and a `public readonly ?string $error` it would be better >> > than both options on the table right now. The option of returning CLI-like >> > results means that we will need a `if (! json_validate())` to treat a >> > valid JSON (really awkward) and the option of using `json_last_error()` >> > relies on an internal state instead of an immutable structure. >> > Effectively, what we need is to return a complex structure which can >> > contain a boolean and a string and that is a class/object. >> > >> Interesting, it was not considered. >> >> I still think BOOLEAN is my preferred choice, but can you provide an >> example about how the code would look like with your approach? Imagine >> you have the feature like in your suggestion ... how a developer would >> write the code? > > > ``` > $json = '{}'; > > $result = json_validate($json); > > if (! $result->valid) { > throw new \Exception('Invalid JSON provided: ' . $result->error); > } > > $something->saveUserProvidedJson($json); > ``` > > -- > Marco Deleu
Thanks for participating on the discussion and I will take note about this also, but ... Quick question: Is in PHP some rule, norma, estandard about "result objects" already? (like, "should have these methods, and implement this interface, etc.) FYI: Just want to clarify that there is nothing bad/wrong about relying on "internal state" by calling json_last_error(), as this pattern is used not only by json_decode() but also mysqli extension for example, among others. Nothing wrong honeslty IMO. RFC: https://wiki.php.net/rfc/json_validate Implementation: https://github.com/php/php-src/pull/9399 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php