thecodingmachine / safe

All PHP functions, rewritten to throw exceptions instead of returning false
MIT License
2.34k stars 140 forks source link

Deprecate the json_encode and json_decode functions #437

Open soullivaneuh opened 8 months ago

soullivaneuh commented 8 months ago

Summary

Since PHP 7.3.0, the json_encode and json_decode functions have a JSON_THROW_ON_ERROR to be set in order to throw an exception instead of returning false in case of error.

Also, Rector proposes to automatically adding it trough the official PHP upgrade migration rules.

Is is still interesting to maintain those function inside this project? If not, we may mark them as deprecated. Also, we should update the provided rector migration file accordingly: https://github.com/thecodingmachine/safe/blob/3a6e43b4be3d3d65b272c2660300a50658ce168b/rector-migrate.php#L461-L462

Any though?

wjzijderveld commented 3 months ago

I do think it would be nice to keep this, as the flag isn't default so at the very least this creates a nicer interface than having to pass the flag every time. But that argument works better if you use Safe in a lot of places and are just used to having it around :sweat_smile:

But I do think this library should account for it. See for example this snippet: https://3v4l.org/GX9mL When using Safe while also passing JSON_THROW_ON_ERROR this method can create false exceptions, as json_last_error() will return the error from a previous call to json_decode where the flag was not passed. We've had some flaky tests because of this, mostly noticeable when running tests in a random order.