lumisys / bcmath_compat
PHP 5.x/7.x polyfill for bcmath extension
Installs: 17 690
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 6
pkg:composer/lumisys/bcmath_compat
Requires
- phpseclib/phpseclib: ^3.0
Requires (Dev)
- phpunit/phpunit: ^4.8.35|^5.7|^6.0
- squizlabs/php_codesniffer: ^3.0
Suggests
- ext-gmp: Will enable faster math operations
Provides
- ext-bcmath: 7.3.5
README
PHP 5.x/7.x polyfill for bcmath extension
Installation
With Composer:
$ composer require phpseclib/bcmath_compat
Installation On Heroku
bcmath_compat does not install the normal way on Heroku / Composer < 2.0 because Heroku uses modified composer.json's. Composer 2 makes this a non-issue.
In light of this the way to install this on Heroku with Composer < 2.0 is to do the following:
$ composer require phpseclib/bcmath_compat:1.0.4
Limitations
-
extension_loaded('bcmath')bcmath_compat cannot make this return true. The recommended remediation is to not do this.
-
ini_set('bcmath.scale', ...)You cannot set configuration options for extensions that are not installed. If you do
ini_set('bcmath.scale', 5)on a system without bcmath installed thenini_get('bcmath.scale')will returnfalse. It's similar to what happens when you doini_set('zzz', 5)and thenini_get('zzz'). You'll getfalseback.The recommended remediation to doing
ini_set('bcmath.scale', ...)is to dobcscale(...). The recommended remediation for doingini_getis (if you're using PHP >= 7.3.0) to dobcscale()or (if you're using PHP < 7.3.0) to domax(0, strlen(bcadd('0', '0')) - 2).Note that
ini_getalways returns a string whereas the recommended remediations return integers.