The purpose of this project is to centralize all (most of) libraries/components that can provide a set of functionality normally provided by a PHP extension of PHP version.
There 3 types of polyfill:
polyfill
, the true polyfill: You add the dependency and it work out of the boxstub
, the faker: Provide empty implementation (ex: xdebug, NewRelic, etc.)alternative
, it's your choice: You have to manually activate the code
The list of all referenced polyfills are available as:
You can navigate throught the registry with PHP object
You can search for polyfills that can replace a function, a class, an extension, a constant, a version of PHP.
See ReaderInterface for more details.
Here an example for a function:
$registry = new \MacFJA\PolyFillRegistry\PolyfillRegistry();
$polyfills = $registry->getPolyfillForFunction('array_column');
You can get the lists of functions, of classes, of constants implemented by a polyfill from its name.
See ReverseSearchInterface for more details.
Here an example to getting all functions of a polyfill:
$registry = new \MacFJA\PolyFillRegistry\PolyfillRegistry();
$functions = $registry->getPolyfillFunctions('paragonie/sodium_compat');
// `$functions` contains the list of all functions name implemented by the polyfill 'paragonie/sodium_compat'
Keeping track of all polyfill is a really huge task and the possibility to miss a polyfill is as great as the size of internet.
To provide the most complete registry, any contribution is welcome.
- If you found a new polyfill, fell free to open a issue on GitHub or a Pull Request.
- If you found an error, fell free to open a issue on GitHub or a Pull Request.
- If you have any question, you can open a issue on GitHub.
If you change the file resources/registry.json
, please run make generate_all
to sort the registry and update the Markdown list
- The library is compatible with PHP 5.3+
- The library use Makefile to reduce human error on generating some file
- The library use Docker to remove system dependencies on file generation