/polyfill-registry

List of all (most of) polyfills for PHP

Primary LanguagePHPMIT LicenseMIT

Polyfill Registry

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.

Different type of Polyfill

There 3 types of polyfill:

  • polyfill, the true polyfill: You add the dependency and it work out of the box
  • stub, the faker: Provide empty implementation (ex: xdebug, NewRelic, etc.)
  • alternative, it's your choice: You have to manually activate the code

All polyfills

The list of all referenced polyfills are available as:

Tools

You can navigate throught the registry with PHP object

Search for a polyfill

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');

Get information about a polyfill

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'

Contribution

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 change the file resources/registry.json, please run make generate_all to sort the registry and update the Markdown list

Compatibility/Component

  • 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