Programs can serialize data to JSON using the json_encode function. The function is widely used for generating JSON responses or payload over HTTP. Currently, it's not possible to tell json_encode what indentation level (2 spaces, 4 spaces, etc.) should be used when using the JSON_PRETTY_PRINT option. When generating JSON files which can be used/read/edited by users, indentation starts to become a relevant topic.
Introducing a 4th parameter, called indent. The type of the parameter is int and its default value is 4.
By default, an indentation of 4 spaces will be applied, just like the original json_encode behaviour with the JSON_PRETTY_PRINT option.
When the indent parameter is passed a different value, an indentation of N spaces will be applied.
$data = [ 'key' => 4, 'other_key' => [2] ]; echo json_encode(['behavior' => 'default'], JSON_PRETTY_PRINT) . PHP_EOL; echo json_encode($data, JSON_PRETTY_PRINT, 512, 2) . PHP_EOL; ?>
{ "behavior": "default" } { "key": 4, "other_key": [ 2 ] }
The only breaking change this could cause is when programs are already passing a fourth parameter by accident.
Normal usage (as opposed to what is described in BIC) of the json_encode function will not be affected, as the default of 4 spaces will still be in effect.
Tests are written with the RFC
Voting opened on 2022-07-04 and closes on 2022-07-18.