PHP 8.0: JSON extension is always available
A subtle yet healthy change in PHP 8.0 is that the JSON extension is always included in PHP.
Prior to PHP 8.0, a compilation flag ./configure --disable-json
allowed disabling the JSON extension.
Debian, Ubuntu, CentOS/RHEL distributions, and Ondrej's builds included JSON extension by default. In these distributions, it was possible to disable JSON extension (although not a sensible decision due to how widely JSON is used out there). Windows builds on php.net are statically bundled with JSON, which means it is not even possible to disable JSON extension.
For PHP builds that had the unlikely flag --disable-json
in the configuration step, you will need update the build scripts to not use this flag for PHP 8.0 and forwards.
Because the JSON extension is already included in PHP core, you will no longer need to check the extension availability with extension_loaded('json')
, or function_exists('json_decode')
functions because they will be always available. These function calls are not broken; they will always return true
in PHP 8.
For composer.json
file that had ext-json
in the require
section, this requirement is no longer necessary if already requires php ^8.0
.
{
"require": {
"php": "^8.0",
- "ext-json": "*",
}
}