upgrade idiorm to php8.1-patched version (aaronpk/idiorm)
This commit is contained in:
parent
4b61618920
commit
80d3db1dcf
|
@ -1,9 +1,16 @@
|
|||
{
|
||||
"repositories": [
|
||||
{
|
||||
"name": "j4mie/idiorm",
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/aaronpk/idiorm"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"spomky-labs/otphp": "^10.0",
|
||||
"chillerlan/php-qrcode": "^4.3.3",
|
||||
"mervick/material-design-icons": "^2.2",
|
||||
"j4mie/idiorm": "^1.5"
|
||||
"j4mie/idiorm": "dev-master"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "8bb918e9a6d0b833ebcb0b525885d36d",
|
||||
"content-hash": "410a7fb5a8fb00f33c59de3b78057604",
|
||||
"packages": [
|
||||
{
|
||||
"name": "beberlei/assert",
|
||||
|
@ -153,16 +153,16 @@
|
|||
},
|
||||
{
|
||||
"name": "chillerlan/php-settings-container",
|
||||
"version": "2.1.3",
|
||||
"version": "2.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/chillerlan/php-settings-container.git",
|
||||
"reference": "125dd573b45ffc7cabecf385986a356ba2c6f602"
|
||||
"reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/125dd573b45ffc7cabecf385986a356ba2c6f602",
|
||||
"reference": "125dd573b45ffc7cabecf385986a356ba2c6f602",
|
||||
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
|
||||
"reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -213,20 +213,20 @@
|
|||
"type": "ko_fi"
|
||||
}
|
||||
],
|
||||
"time": "2022-03-09T13:18:58+00:00"
|
||||
"time": "2022-07-05T22:32:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "j4mie/idiorm",
|
||||
"version": "v1.5.7",
|
||||
"version": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/j4mie/idiorm.git",
|
||||
"reference": "d23f97053ef5d0b988a02c6a71eb5c6118b2f5b4"
|
||||
"url": "https://github.com/aaronpk/idiorm.git",
|
||||
"reference": "efc8ea06698f53e2c479c7696f2b154c47c3a3cb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/j4mie/idiorm/zipball/d23f97053ef5d0b988a02c6a71eb5c6118b2f5b4",
|
||||
"reference": "d23f97053ef5d0b988a02c6a71eb5c6118b2f5b4",
|
||||
"url": "https://api.github.com/repos/aaronpk/idiorm/zipball/efc8ea06698f53e2c479c7696f2b154c47c3a3cb",
|
||||
"reference": "efc8ea06698f53e2c479c7696f2b154c47c3a3cb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -236,13 +236,18 @@
|
|||
"ext-pdo_sqlite": "*",
|
||||
"phpunit/phpunit": "^4.8"
|
||||
},
|
||||
"default-branch": true,
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"idiorm.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"scripts": {
|
||||
"test": [
|
||||
"phpunit -c ./phpunit.xml"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"BSD-2-Clause",
|
||||
"BSD-3-Clause",
|
||||
|
@ -279,7 +284,7 @@
|
|||
"issues": "https://github.com/j4mie/idiorm/issues",
|
||||
"source": "https://github.com/j4mie/idiorm"
|
||||
},
|
||||
"time": "2020-04-29T00:37:09+00:00"
|
||||
"time": "2022-03-26T15:19:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mervick/material-design-icons",
|
||||
|
@ -326,16 +331,16 @@
|
|||
},
|
||||
{
|
||||
"name": "paragonie/constant_time_encoding",
|
||||
"version": "v2.4.0",
|
||||
"version": "v2.6.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/paragonie/constant_time_encoding.git",
|
||||
"reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c"
|
||||
"reference": "58c3f47f650c94ec05a151692652a868995d2938"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
|
||||
"reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
|
||||
"url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938",
|
||||
"reference": "58c3f47f650c94ec05a151692652a868995d2938",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -389,20 +394,20 @@
|
|||
"issues": "https://github.com/paragonie/constant_time_encoding/issues",
|
||||
"source": "https://github.com/paragonie/constant_time_encoding"
|
||||
},
|
||||
"time": "2020-12-06T15:14:20+00:00"
|
||||
"time": "2022-06-14T06:56:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spomky-labs/otphp",
|
||||
"version": "v10.0.1",
|
||||
"version": "v10.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Spomky-Labs/otphp.git",
|
||||
"reference": "f44cce5a9db4b8da410215d992110482c931232f"
|
||||
"reference": "9784d9f7c790eed26e102d6c78f12c754036c366"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/f44cce5a9db4b8da410215d992110482c931232f",
|
||||
"reference": "f44cce5a9db4b8da410215d992110482c931232f",
|
||||
"url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9784d9f7c790eed26e102d6c78f12c754036c366",
|
||||
"reference": "9784d9f7c790eed26e102d6c78f12c754036c366",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -410,7 +415,7 @@
|
|||
"ext-mbstring": "*",
|
||||
"paragonie/constant_time_encoding": "^2.0",
|
||||
"php": "^7.2|^8.0",
|
||||
"thecodingmachine/safe": "^0.1.14|^1.0"
|
||||
"thecodingmachine/safe": "^0.1.14|^1.0|^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-coveralls/php-coveralls": "^2.0",
|
||||
|
@ -420,7 +425,7 @@
|
|||
"phpstan/phpstan-phpunit": "^0.12",
|
||||
"phpstan/phpstan-strict-rules": "^0.12",
|
||||
"phpunit/phpunit": "^8.0",
|
||||
"thecodingmachine/phpstan-safe-rule": "^1.0"
|
||||
"thecodingmachine/phpstan-safe-rule": "^1.0 || ^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
|
@ -462,52 +467,51 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Spomky-Labs/otphp/issues",
|
||||
"source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.1"
|
||||
"source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.3"
|
||||
},
|
||||
"time": "2020-01-28T09:24:19+00:00"
|
||||
"time": "2022-03-17T08:00:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "thecodingmachine/safe",
|
||||
"version": "v1.3.3",
|
||||
"version": "v2.2.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thecodingmachine/safe.git",
|
||||
"reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc"
|
||||
"reference": "2a8d758fd17763faf86e4aa798193e17b9fac38c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
|
||||
"reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
|
||||
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/2a8d758fd17763faf86e4aa798193e17b9fac38c",
|
||||
"reference": "2a8d758fd17763faf86e4aa798193e17b9fac38c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2"
|
||||
"php": "^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^0.12",
|
||||
"phpstan/phpstan": "^1.5",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.2",
|
||||
"thecodingmachine/phpstan-strict-rules": "^0.12"
|
||||
"thecodingmachine/phpstan-strict-rules": "^1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.1-dev"
|
||||
"dev-master": "2.2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Safe\\": [
|
||||
"lib/",
|
||||
"deprecated/",
|
||||
"generated/"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"deprecated/apc.php",
|
||||
"deprecated/array.php",
|
||||
"deprecated/datetime.php",
|
||||
"deprecated/libevent.php",
|
||||
"deprecated/password.php",
|
||||
"deprecated/mssql.php",
|
||||
"deprecated/stats.php",
|
||||
"deprecated/strings.php",
|
||||
"lib/special_cases.php",
|
||||
"deprecated/mysqli.php",
|
||||
"generated/apache.php",
|
||||
"generated/apcu.php",
|
||||
"generated/array.php",
|
||||
|
@ -528,6 +532,7 @@
|
|||
"generated/fpm.php",
|
||||
"generated/ftp.php",
|
||||
"generated/funchand.php",
|
||||
"generated/gettext.php",
|
||||
"generated/gmp.php",
|
||||
"generated/gnupg.php",
|
||||
"generated/hash.php",
|
||||
|
@ -537,7 +542,6 @@
|
|||
"generated/image.php",
|
||||
"generated/imap.php",
|
||||
"generated/info.php",
|
||||
"generated/ingres-ii.php",
|
||||
"generated/inotify.php",
|
||||
"generated/json.php",
|
||||
"generated/ldap.php",
|
||||
|
@ -546,20 +550,14 @@
|
|||
"generated/mailparse.php",
|
||||
"generated/mbstring.php",
|
||||
"generated/misc.php",
|
||||
"generated/msql.php",
|
||||
"generated/mysql.php",
|
||||
"generated/mysqli.php",
|
||||
"generated/mysqlndMs.php",
|
||||
"generated/mysqlndQc.php",
|
||||
"generated/network.php",
|
||||
"generated/oci8.php",
|
||||
"generated/opcache.php",
|
||||
"generated/openssl.php",
|
||||
"generated/outcontrol.php",
|
||||
"generated/password.php",
|
||||
"generated/pcntl.php",
|
||||
"generated/pcre.php",
|
||||
"generated/pdf.php",
|
||||
"generated/pgsql.php",
|
||||
"generated/posix.php",
|
||||
"generated/ps.php",
|
||||
|
@ -570,7 +568,6 @@
|
|||
"generated/sem.php",
|
||||
"generated/session.php",
|
||||
"generated/shmop.php",
|
||||
"generated/simplexml.php",
|
||||
"generated/sockets.php",
|
||||
"generated/sodium.php",
|
||||
"generated/solr.php",
|
||||
|
@ -592,6 +589,13 @@
|
|||
"generated/yaz.php",
|
||||
"generated/zip.php",
|
||||
"generated/zlib.php"
|
||||
],
|
||||
"classmap": [
|
||||
"lib/DateTime.php",
|
||||
"lib/DateTimeImmutable.php",
|
||||
"lib/Exceptions/",
|
||||
"deprecated/Exceptions/",
|
||||
"generated/Exceptions/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -601,9 +605,9 @@
|
|||
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
|
||||
"support": {
|
||||
"issues": "https://github.com/thecodingmachine/safe/issues",
|
||||
"source": "https://github.com/thecodingmachine/safe/tree/v1.3.3"
|
||||
"source": "https://github.com/thecodingmachine/safe/tree/v2.2.1"
|
||||
},
|
||||
"time": "2020-10-28T17:51:34+00:00"
|
||||
"time": "2022-06-09T15:36:45+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
@ -738,16 +742,16 @@
|
|||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.13.2",
|
||||
"version": "v4.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077"
|
||||
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
|
||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
||||
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -788,9 +792,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
|
||||
},
|
||||
"time": "2021-11-30T19:35:32+00:00"
|
||||
"time": "2022-05-31T20:59:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phar-io/manifest",
|
||||
|
@ -1015,16 +1019,16 @@
|
|||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
|
||||
"reference": "77a32518733312af16a44300404e945338981de3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
|
||||
"reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
||||
"reference": "77a32518733312af16a44300404e945338981de3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1059,9 +1063,9 @@
|
|||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
|
||||
},
|
||||
"time": "2022-01-04T19:58:01+00:00"
|
||||
"time": "2022-03-15T21:29:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpspec/prophecy",
|
||||
|
@ -1132,20 +1136,20 @@
|
|||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.1.2",
|
||||
"version": "1.8.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "bcea0ae85868a89d5789c75f012c93129f842934"
|
||||
"reference": "8dbba631fa32f4b289404469c2afd6122fd61d67"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/bcea0ae85868a89d5789c75f012c93129f842934",
|
||||
"reference": "bcea0ae85868a89d5789c75f012c93129f842934",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/8dbba631fa32f4b289404469c2afd6122fd61d67",
|
||||
"reference": "8dbba631fa32f4b289404469c2afd6122fd61d67",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1|^8.0"
|
||||
"php": "^7.2|^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan-shim": "*"
|
||||
|
@ -1155,11 +1159,6 @@
|
|||
"phpstan.phar"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
|
@ -1170,6 +1169,10 @@
|
|||
"MIT"
|
||||
],
|
||||
"description": "PHPStan - PHP Static Analysis Tool",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpstan/issues",
|
||||
"source": "https://github.com/phpstan/phpstan/tree/1.8.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/ondrejmirtes",
|
||||
|
@ -1188,7 +1191,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-11-09T12:41:09+00:00"
|
||||
"time": "2022-07-12T16:08:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
|
@ -1977,16 +1980,16 @@
|
|||
},
|
||||
{
|
||||
"name": "sebastian/environment",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/environment.git",
|
||||
"reference": "388b6ced16caa751030f6a69e588299fa09200ac"
|
||||
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
|
||||
"reference": "388b6ced16caa751030f6a69e588299fa09200ac",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
|
||||
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2028,7 +2031,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/environment/issues",
|
||||
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
|
||||
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2036,7 +2039,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-09-28T05:52:38+00:00"
|
||||
"time": "2022-04-03T09:37:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/exporter",
|
||||
|
@ -2575,88 +2578,6 @@
|
|||
],
|
||||
"time": "2020-09-28T06:39:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.25.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
|
||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"provide": {
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ctype": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.23-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Ctype\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Gert de Pagter",
|
||||
"email": "BackEndTea@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill for ctype functions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"ctype",
|
||||
"polyfill",
|
||||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-10-20T20:35:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "theseer/tokenizer",
|
||||
"version": "1.2.1",
|
||||
|
@ -2709,21 +2630,21 @@
|
|||
},
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
"version": "1.10.0",
|
||||
"version": "1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webmozarts/assert.git",
|
||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
|
||||
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
|
||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
|
||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
||||
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0",
|
||||
"symfony/polyfill-ctype": "^1.8"
|
||||
"ext-ctype": "*",
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<0.12.20",
|
||||
|
@ -2761,17 +2682,19 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/webmozarts/assert/issues",
|
||||
"source": "https://github.com/webmozarts/assert/tree/1.10.0"
|
||||
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
||||
},
|
||||
"time": "2021-03-09T10:59:23+00:00"
|
||||
"time": "2022-06-03T18:03:27+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"stability-flags": {
|
||||
"j4mie/idiorm": 20
|
||||
},
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
"plugin-api-version": "2.1.0"
|
||||
}
|
||||
|
|
|
@ -2,11 +2,6 @@
|
|||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
if (PHP_VERSION_ID < 50600) {
|
||||
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056::getLoader();
|
||||
|
|
|
@ -1,120 +0,0 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Proxy PHP file generated by Composer
|
||||
*
|
||||
* This file includes the referenced bin path (../nikic/php-parser/bin/php-parse)
|
||||
* using a stream wrapper to prevent the shebang from being output on PHP<8
|
||||
*
|
||||
* @generated
|
||||
*/
|
||||
|
||||
namespace Composer;
|
||||
|
||||
$GLOBALS['_composer_bin_dir'] = __DIR__;
|
||||
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
|
||||
|
||||
if (PHP_VERSION_ID < 80000) {
|
||||
if (!class_exists('Composer\BinProxyWrapper')) {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class BinProxyWrapper
|
||||
{
|
||||
private $handle;
|
||||
private $position;
|
||||
private $realpath;
|
||||
|
||||
public function stream_open($path, $mode, $options, &$opened_path)
|
||||
{
|
||||
// get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
|
||||
$opened_path = substr($path, 17);
|
||||
$this->realpath = realpath($opened_path) ?: $opened_path;
|
||||
$opened_path = $this->realpath;
|
||||
$this->handle = fopen($this->realpath, $mode);
|
||||
$this->position = 0;
|
||||
|
||||
return (bool) $this->handle;
|
||||
}
|
||||
|
||||
public function stream_read($count)
|
||||
{
|
||||
$data = fread($this->handle, $count);
|
||||
|
||||
if ($this->position === 0) {
|
||||
$data = preg_replace('{^#!.*\r?\n}', '', $data);
|
||||
}
|
||||
|
||||
$this->position += strlen($data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function stream_cast($castAs)
|
||||
{
|
||||
return $this->handle;
|
||||
}
|
||||
|
||||
public function stream_close()
|
||||
{
|
||||
fclose($this->handle);
|
||||
}
|
||||
|
||||
public function stream_lock($operation)
|
||||
{
|
||||
return $operation ? flock($this->handle, $operation) : true;
|
||||
}
|
||||
|
||||
public function stream_seek($offset, $whence)
|
||||
{
|
||||
if (0 === fseek($this->handle, $offset, $whence)) {
|
||||
$this->position = ftell($this->handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function stream_tell()
|
||||
{
|
||||
return $this->position;
|
||||
}
|
||||
|
||||
public function stream_eof()
|
||||
{
|
||||
return feof($this->handle);
|
||||
}
|
||||
|
||||
public function stream_stat()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
public function stream_set_option($option, $arg1, $arg2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function url_stat($path, $flags)
|
||||
{
|
||||
$path = substr($path, 17);
|
||||
if (file_exists($path)) {
|
||||
return stat($path);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||
) {
|
||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse');
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
include __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse';
|
|
@ -0,0 +1 @@
|
|||
../nikic/php-parser/bin/php-parse
|
|
@ -1,120 +0,0 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Proxy PHP file generated by Composer
|
||||
*
|
||||
* This file includes the referenced bin path (../phpstan/phpstan/phpstan)
|
||||
* using a stream wrapper to prevent the shebang from being output on PHP<8
|
||||
*
|
||||
* @generated
|
||||
*/
|
||||
|
||||
namespace Composer;
|
||||
|
||||
$GLOBALS['_composer_bin_dir'] = __DIR__;
|
||||
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
|
||||
|
||||
if (PHP_VERSION_ID < 80000) {
|
||||
if (!class_exists('Composer\BinProxyWrapper')) {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class BinProxyWrapper
|
||||
{
|
||||
private $handle;
|
||||
private $position;
|
||||
private $realpath;
|
||||
|
||||
public function stream_open($path, $mode, $options, &$opened_path)
|
||||
{
|
||||
// get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
|
||||
$opened_path = substr($path, 17);
|
||||
$this->realpath = realpath($opened_path) ?: $opened_path;
|
||||
$opened_path = $this->realpath;
|
||||
$this->handle = fopen($this->realpath, $mode);
|
||||
$this->position = 0;
|
||||
|
||||
return (bool) $this->handle;
|
||||
}
|
||||
|
||||
public function stream_read($count)
|
||||
{
|
||||
$data = fread($this->handle, $count);
|
||||
|
||||
if ($this->position === 0) {
|
||||
$data = preg_replace('{^#!.*\r?\n}', '', $data);
|
||||
}
|
||||
|
||||
$this->position += strlen($data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function stream_cast($castAs)
|
||||
{
|
||||
return $this->handle;
|
||||
}
|
||||
|
||||
public function stream_close()
|
||||
{
|
||||
fclose($this->handle);
|
||||
}
|
||||
|
||||
public function stream_lock($operation)
|
||||
{
|
||||
return $operation ? flock($this->handle, $operation) : true;
|
||||
}
|
||||
|
||||
public function stream_seek($offset, $whence)
|
||||
{
|
||||
if (0 === fseek($this->handle, $offset, $whence)) {
|
||||
$this->position = ftell($this->handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function stream_tell()
|
||||
{
|
||||
return $this->position;
|
||||
}
|
||||
|
||||
public function stream_eof()
|
||||
{
|
||||
return feof($this->handle);
|
||||
}
|
||||
|
||||
public function stream_stat()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
public function stream_set_option($option, $arg1, $arg2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function url_stat($path, $flags)
|
||||
{
|
||||
$path = substr($path, 17);
|
||||
if (file_exists($path)) {
|
||||
return stat($path);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||
) {
|
||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/phpstan/phpstan/phpstan');
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
include __DIR__ . '/..'.'/phpstan/phpstan/phpstan';
|
|
@ -0,0 +1 @@
|
|||
../phpstan/phpstan/phpstan
|
|
@ -1,120 +0,0 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Proxy PHP file generated by Composer
|
||||
*
|
||||
* This file includes the referenced bin path (../phpstan/phpstan/phpstan.phar)
|
||||
* using a stream wrapper to prevent the shebang from being output on PHP<8
|
||||
*
|
||||
* @generated
|
||||
*/
|
||||
|
||||
namespace Composer;
|
||||
|
||||
$GLOBALS['_composer_bin_dir'] = __DIR__;
|
||||
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
|
||||
|
||||
if (PHP_VERSION_ID < 80000) {
|
||||
if (!class_exists('Composer\BinProxyWrapper')) {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
final class BinProxyWrapper
|
||||
{
|
||||
private $handle;
|
||||
private $position;
|
||||
private $realpath;
|
||||
|
||||
public function stream_open($path, $mode, $options, &$opened_path)
|
||||
{
|
||||
// get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
|
||||
$opened_path = substr($path, 17);
|
||||
$this->realpath = realpath($opened_path) ?: $opened_path;
|
||||
$opened_path = $this->realpath;
|
||||
$this->handle = fopen($this->realpath, $mode);
|
||||
$this->position = 0;
|
||||
|
||||
return (bool) $this->handle;
|
||||
}
|
||||
|
||||
public function stream_read($count)
|
||||
{
|
||||
$data = fread($this->handle, $count);
|
||||
|
||||
if ($this->position === 0) {
|
||||
$data = preg_replace('{^#!.*\r?\n}', '', $data);
|
||||
}
|
||||
|
||||
$this->position += strlen($data);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function stream_cast($castAs)
|
||||
{
|
||||
return $this->handle;
|
||||
}
|
||||
|
||||
public function stream_close()
|
||||
{
|
||||
fclose($this->handle);
|
||||
}
|
||||
|
||||
public function stream_lock($operation)
|
||||
{
|
||||
return $operation ? flock($this->handle, $operation) : true;
|
||||
}
|
||||
|
||||
public function stream_seek($offset, $whence)
|
||||
{
|
||||
if (0 === fseek($this->handle, $offset, $whence)) {
|
||||
$this->position = ftell($this->handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function stream_tell()
|
||||
{
|
||||
return $this->position;
|
||||
}
|
||||
|
||||
public function stream_eof()
|
||||
{
|
||||
return feof($this->handle);
|
||||
}
|
||||
|
||||
public function stream_stat()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
public function stream_set_option($option, $arg1, $arg2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function url_stat($path, $flags)
|
||||
{
|
||||
$path = substr($path, 17);
|
||||
if (file_exists($path)) {
|
||||
return stat($path);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||
) {
|
||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/phpstan/phpstan/phpstan.phar');
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
include __DIR__ . '/..'.'/phpstan/phpstan/phpstan.phar';
|
|
@ -0,0 +1 @@
|
|||
../phpstan/phpstan/phpstan.phar
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: "Install PHP"
|
||||
uses: shivammathur/setup-php@v2
|
||||
|
@ -48,12 +48,12 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: "Checkout sources"
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: "Install PHP"
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: "7.4"
|
||||
php-version: "8.1"
|
||||
coverage: none
|
||||
tools: phpDocumentor
|
||||
extensions: json
|
||||
|
@ -62,7 +62,7 @@ jobs:
|
|||
run: phpdoc --config=phpdoc.xml
|
||||
|
||||
- name: "Publish Docs to gh-pages"
|
||||
uses: JamesIves/github-pages-deploy-action@v4.2.5
|
||||
uses: JamesIves/github-pages-deploy-action@v4.3.4
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: docs
|
||||
|
@ -86,7 +86,7 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: "Checkout"
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: "Install PHP with extensions"
|
||||
uses: shivammathur/setup-php@v2
|
||||
|
@ -102,6 +102,4 @@ jobs:
|
|||
run: php vendor/phpunit/phpunit/phpunit --configuration=phpunit.xml
|
||||
|
||||
- name: "Send code coverage report to Codecov.io"
|
||||
uses: codecov/codecov-action@v1
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
uses: codecov/codecov-action@v3
|
||||
|
|
|
@ -35,7 +35,7 @@ A container class for immutable settings objects. Not a DI container. PHP 7.4+
|
|||
```json
|
||||
{
|
||||
"require": {
|
||||
"php": "^7.4",
|
||||
"php": "^7.4 || ^8.0",
|
||||
"chillerlan/php-settings-container": "dev-main"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -154,6 +154,7 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
|
|||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function jsonSerialize():array{
|
||||
return $this->toArray();
|
||||
}
|
||||
|
|
|
@ -149,7 +149,7 @@ class ClassLoader
|
|||
|
||||
/**
|
||||
* @return string[] Array of classname => path
|
||||
* @psalm-return array<string, string>
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
public function getClassMap()
|
||||
{
|
||||
|
|
|
@ -21,14 +21,12 @@ use Composer\Semver\VersionParser;
|
|||
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
|
||||
*
|
||||
* To require its presence, you can require `composer-runtime-api ^2.0`
|
||||
*
|
||||
* @final
|
||||
*/
|
||||
class InstalledVersions
|
||||
{
|
||||
/**
|
||||
* @var mixed[]|null
|
||||
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||
* @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
|
||||
*/
|
||||
private static $installed;
|
||||
|
||||
|
@ -39,7 +37,7 @@ class InstalledVersions
|
|||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static $installedByVendor = array();
|
||||
|
||||
|
@ -243,7 +241,7 @@ class InstalledVersions
|
|||
|
||||
/**
|
||||
* @return array
|
||||
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
||||
*/
|
||||
public static function getRootPackage()
|
||||
{
|
||||
|
@ -257,7 +255,7 @@ class InstalledVersions
|
|||
*
|
||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||
* @return array[]
|
||||
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
||||
*/
|
||||
public static function getRawData()
|
||||
{
|
||||
|
@ -280,7 +278,7 @@ class InstalledVersions
|
|||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||
*
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
public static function getAllRawData()
|
||||
{
|
||||
|
@ -303,7 +301,7 @@ class InstalledVersions
|
|||
* @param array[] $data A vendor/composer/installed.php data set
|
||||
* @return void
|
||||
*
|
||||
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
||||
*/
|
||||
public static function reload($data)
|
||||
{
|
||||
|
@ -313,7 +311,7 @@ class InstalledVersions
|
|||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static function getInstalled()
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
|
@ -430,6 +430,93 @@ return array(
|
|||
'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
|
||||
'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
|
||||
'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
|
||||
'Safe\\DateTime' => $vendorDir . '/thecodingmachine/safe/lib/DateTime.php',
|
||||
'Safe\\DateTimeImmutable' => $vendorDir . '/thecodingmachine/safe/lib/DateTimeImmutable.php',
|
||||
'Safe\\Exceptions\\ApacheException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ApacheException.php',
|
||||
'Safe\\Exceptions\\ApcException' => $vendorDir . '/thecodingmachine/safe/deprecated/Exceptions/ApcException.php',
|
||||
'Safe\\Exceptions\\ApcuException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ApcuException.php',
|
||||
'Safe\\Exceptions\\ArrayException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ArrayException.php',
|
||||
'Safe\\Exceptions\\Bzip2Exception' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/Bzip2Exception.php',
|
||||
'Safe\\Exceptions\\CalendarException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/CalendarException.php',
|
||||
'Safe\\Exceptions\\ClassobjException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ClassobjException.php',
|
||||
'Safe\\Exceptions\\ComException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ComException.php',
|
||||
'Safe\\Exceptions\\CubridException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/CubridException.php',
|
||||
'Safe\\Exceptions\\CurlException' => $vendorDir . '/thecodingmachine/safe/lib/Exceptions/CurlException.php',
|
||||
'Safe\\Exceptions\\DatetimeException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/DatetimeException.php',
|
||||
'Safe\\Exceptions\\DirException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/DirException.php',
|
||||
'Safe\\Exceptions\\EioException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/EioException.php',
|
||||
'Safe\\Exceptions\\ErrorfuncException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ErrorfuncException.php',
|
||||
'Safe\\Exceptions\\ExecException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ExecException.php',
|
||||
'Safe\\Exceptions\\FileinfoException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/FileinfoException.php',
|
||||
'Safe\\Exceptions\\FilesystemException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/FilesystemException.php',
|
||||
'Safe\\Exceptions\\FilterException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/FilterException.php',
|
||||
'Safe\\Exceptions\\FpmException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/FpmException.php',
|
||||
'Safe\\Exceptions\\FtpException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/FtpException.php',
|
||||
'Safe\\Exceptions\\FunchandException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/FunchandException.php',
|
||||
'Safe\\Exceptions\\GettextException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/GettextException.php',
|
||||
'Safe\\Exceptions\\GmpException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/GmpException.php',
|
||||
'Safe\\Exceptions\\GnupgException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/GnupgException.php',
|
||||
'Safe\\Exceptions\\HashException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/HashException.php',
|
||||
'Safe\\Exceptions\\IbaseException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/IbaseException.php',
|
||||
'Safe\\Exceptions\\IbmDb2Exception' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/IbmDb2Exception.php',
|
||||
'Safe\\Exceptions\\IconvException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/IconvException.php',
|
||||
'Safe\\Exceptions\\ImageException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ImageException.php',
|
||||
'Safe\\Exceptions\\ImapException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ImapException.php',
|
||||
'Safe\\Exceptions\\InfoException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/InfoException.php',
|
||||
'Safe\\Exceptions\\InotifyException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/InotifyException.php',
|
||||
'Safe\\Exceptions\\JsonException' => $vendorDir . '/thecodingmachine/safe/lib/Exceptions/JsonException.php',
|
||||
'Safe\\Exceptions\\LdapException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/LdapException.php',
|
||||
'Safe\\Exceptions\\LibeventException' => $vendorDir . '/thecodingmachine/safe/deprecated/Exceptions/LibeventException.php',
|
||||
'Safe\\Exceptions\\LibxmlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/LibxmlException.php',
|
||||
'Safe\\Exceptions\\LzfException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/LzfException.php',
|
||||
'Safe\\Exceptions\\MailparseException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/MailparseException.php',
|
||||
'Safe\\Exceptions\\MbstringException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/MbstringException.php',
|
||||
'Safe\\Exceptions\\MiscException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/MiscException.php',
|
||||
'Safe\\Exceptions\\MssqlException' => $vendorDir . '/thecodingmachine/safe/deprecated/Exceptions/MssqlException.php',
|
||||
'Safe\\Exceptions\\MysqlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/MysqlException.php',
|
||||
'Safe\\Exceptions\\MysqliException' => $vendorDir . '/thecodingmachine/safe/deprecated/Exceptions/MysqliException.php',
|
||||
'Safe\\Exceptions\\NetworkException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/NetworkException.php',
|
||||
'Safe\\Exceptions\\Oci8Exception' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/Oci8Exception.php',
|
||||
'Safe\\Exceptions\\OpcacheException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/OpcacheException.php',
|
||||
'Safe\\Exceptions\\OpensslException' => $vendorDir . '/thecodingmachine/safe/lib/Exceptions/OpensslException.php',
|
||||
'Safe\\Exceptions\\OutcontrolException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/OutcontrolException.php',
|
||||
'Safe\\Exceptions\\PasswordException' => $vendorDir . '/thecodingmachine/safe/deprecated/Exceptions/PasswordException.php',
|
||||
'Safe\\Exceptions\\PcntlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/PcntlException.php',
|
||||
'Safe\\Exceptions\\PcreException' => $vendorDir . '/thecodingmachine/safe/lib/Exceptions/PcreException.php',
|
||||
'Safe\\Exceptions\\PgsqlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/PgsqlException.php',
|
||||
'Safe\\Exceptions\\PosixException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/PosixException.php',
|
||||
'Safe\\Exceptions\\PsException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/PsException.php',
|
||||
'Safe\\Exceptions\\PspellException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/PspellException.php',
|
||||
'Safe\\Exceptions\\ReadlineException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ReadlineException.php',
|
||||
'Safe\\Exceptions\\RpminfoException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/RpminfoException.php',
|
||||
'Safe\\Exceptions\\RrdException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/RrdException.php',
|
||||
'Safe\\Exceptions\\SafeExceptionInterface' => $vendorDir . '/thecodingmachine/safe/lib/Exceptions/SafeExceptionInterface.php',
|
||||
'Safe\\Exceptions\\SemException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SemException.php',
|
||||
'Safe\\Exceptions\\SessionException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SessionException.php',
|
||||
'Safe\\Exceptions\\ShmopException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ShmopException.php',
|
||||
'Safe\\Exceptions\\SimplexmlException' => $vendorDir . '/thecodingmachine/safe/lib/Exceptions/SimplexmlException.php',
|
||||
'Safe\\Exceptions\\SocketsException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SocketsException.php',
|
||||
'Safe\\Exceptions\\SodiumException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SodiumException.php',
|
||||
'Safe\\Exceptions\\SolrException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SolrException.php',
|
||||
'Safe\\Exceptions\\SplException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SplException.php',
|
||||
'Safe\\Exceptions\\SqlsrvException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SqlsrvException.php',
|
||||
'Safe\\Exceptions\\SsdeepException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SsdeepException.php',
|
||||
'Safe\\Exceptions\\Ssh2Exception' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/Ssh2Exception.php',
|
||||
'Safe\\Exceptions\\StatsException' => $vendorDir . '/thecodingmachine/safe/deprecated/Exceptions/StatsException.php',
|
||||
'Safe\\Exceptions\\StreamException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/StreamException.php',
|
||||
'Safe\\Exceptions\\StringsException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/StringsException.php',
|
||||
'Safe\\Exceptions\\SwooleException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/SwooleException.php',
|
||||
'Safe\\Exceptions\\UodbcException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/UodbcException.php',
|
||||
'Safe\\Exceptions\\UopzException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/UopzException.php',
|
||||
'Safe\\Exceptions\\UrlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/UrlException.php',
|
||||
'Safe\\Exceptions\\VarException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/VarException.php',
|
||||
'Safe\\Exceptions\\XdiffException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/XdiffException.php',
|
||||
'Safe\\Exceptions\\XmlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/XmlException.php',
|
||||
'Safe\\Exceptions\\XmlrpcException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/XmlrpcException.php',
|
||||
'Safe\\Exceptions\\YamlException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/YamlException.php',
|
||||
'Safe\\Exceptions\\YazException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/YazException.php',
|
||||
'Safe\\Exceptions\\ZipException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ZipException.php',
|
||||
'Safe\\Exceptions\\ZlibException' => $vendorDir . '/thecodingmachine/safe/generated/Exceptions/ZlibException.php',
|
||||
'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
|
||||
'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php',
|
||||
'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
|
||||
|
|
|
@ -2,18 +2,24 @@
|
|||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
|
||||
'9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
|
||||
'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||
'a4ecaeafb8cfb009ad0e052c90355e98' => $vendorDir . '/beberlei/assert/lib/Assert/functions.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'51fcf4e06c07cc00c920b44bcd900e7a' => $vendorDir . '/thecodingmachine/safe/deprecated/apc.php',
|
||||
'288267919fedd3829a7732b5fb202197' => $vendorDir . '/thecodingmachine/safe/deprecated/array.php',
|
||||
'a88cd08cfbf1600f7d5de6e587eee1fa' => $vendorDir . '/thecodingmachine/safe/deprecated/datetime.php',
|
||||
'47f619d9197b36cf5ab70738d7743fe2' => $vendorDir . '/thecodingmachine/safe/deprecated/libevent.php',
|
||||
'213c1c2258e2e5aa409a0af3e993b3a9' => $vendorDir . '/thecodingmachine/safe/deprecated/password.php',
|
||||
'ea6bb8a12ef9b68f6ada99058e530760' => $vendorDir . '/thecodingmachine/safe/deprecated/mssql.php',
|
||||
'9a29089eb3ce41a446744c68a00f118c' => $vendorDir . '/thecodingmachine/safe/deprecated/stats.php',
|
||||
'd5947c9df62650029c674c79176af68d' => $vendorDir . '/thecodingmachine/safe/deprecated/strings.php',
|
||||
'72243e5536b63e298acb6476f01f1aff' => $vendorDir . '/thecodingmachine/safe/lib/special_cases.php',
|
||||
'09f92ed6301edc510574c196c2b7d1af' => $vendorDir . '/thecodingmachine/safe/deprecated/mysqli.php',
|
||||
'3f648889e687f31c52f949ba8a9d0873' => $vendorDir . '/thecodingmachine/safe/generated/apache.php',
|
||||
'eeb4581d958421a4244aaa4167c6a575' => $vendorDir . '/thecodingmachine/safe/generated/apcu.php',
|
||||
'04cb0b3c1dac5b5ddb23c14e3d66dbe9' => $vendorDir . '/thecodingmachine/safe/generated/array.php',
|
||||
|
@ -34,6 +40,7 @@ return array(
|
|||
'fbd163fc68c5faf73d5ed4002ffd836d' => $vendorDir . '/thecodingmachine/safe/generated/fpm.php',
|
||||
'21b511999d61411fab0692ff8795bbed' => $vendorDir . '/thecodingmachine/safe/generated/ftp.php',
|
||||
'85fbd73fc92365cd90526b0ea03cae3a' => $vendorDir . '/thecodingmachine/safe/generated/funchand.php',
|
||||
'a2e4c6dfdbf36f56f1945ddcbd54e289' => $vendorDir . '/thecodingmachine/safe/generated/gettext.php',
|
||||
'51df9c146e0b7dcbdf358d8abd24dbdc' => $vendorDir . '/thecodingmachine/safe/generated/gmp.php',
|
||||
'93bb7fe678d7dcfb1322f8e3475a48b0' => $vendorDir . '/thecodingmachine/safe/generated/gnupg.php',
|
||||
'c171ba99cf316379ff66468392bf4950' => $vendorDir . '/thecodingmachine/safe/generated/hash.php',
|
||||
|
@ -43,7 +50,6 @@ return array(
|
|||
'c28a05f498c01b810a714f7214b7a8da' => $vendorDir . '/thecodingmachine/safe/generated/image.php',
|
||||
'8063cd92acdf00fd978b5599eb7cc142' => $vendorDir . '/thecodingmachine/safe/generated/imap.php',
|
||||
'8bd26dbe768e9c9599edad7b198e5446' => $vendorDir . '/thecodingmachine/safe/generated/info.php',
|
||||
'0c577fe603b029d4b65c84376b15dbd5' => $vendorDir . '/thecodingmachine/safe/generated/ingres-ii.php',
|
||||
'd4362910bde43c0f956b52527effd7d4' => $vendorDir . '/thecodingmachine/safe/generated/inotify.php',
|
||||
'696ba49197d9b55f0428a12bb5a818e1' => $vendorDir . '/thecodingmachine/safe/generated/json.php',
|
||||
'9818aaa99c8647c63f8ef62b7a368160' => $vendorDir . '/thecodingmachine/safe/generated/ldap.php',
|
||||
|
@ -52,20 +58,14 @@ return array(
|
|||
'bdca804bb0904ea9f53f328dfc0bb8a5' => $vendorDir . '/thecodingmachine/safe/generated/mailparse.php',
|
||||
'b0a3fcac3eaf55445796d6af26b89366' => $vendorDir . '/thecodingmachine/safe/generated/mbstring.php',
|
||||
'98de16b8db03eb0cb4d318b4402215a6' => $vendorDir . '/thecodingmachine/safe/generated/misc.php',
|
||||
'c112440003b56e243b192c11fa9d836e' => $vendorDir . '/thecodingmachine/safe/generated/msql.php',
|
||||
'7cefd81607cd21b8b3a15656eb6465f5' => $vendorDir . '/thecodingmachine/safe/generated/mysql.php',
|
||||
'aaf438b080089c6d0686679cd34aa72e' => $vendorDir . '/thecodingmachine/safe/generated/mysqli.php',
|
||||
'df0ef890e9afbf95f3924feb1c7a89f3' => $vendorDir . '/thecodingmachine/safe/generated/mysqlndMs.php',
|
||||
'db595fee5972867e45c5327010d78735' => $vendorDir . '/thecodingmachine/safe/generated/mysqlndQc.php',
|
||||
'cbac956836b72483dcff1ac39d5c0a0f' => $vendorDir . '/thecodingmachine/safe/generated/network.php',
|
||||
'6c8f89dfbdc117d7871f572269363f25' => $vendorDir . '/thecodingmachine/safe/generated/oci8.php',
|
||||
'169a669966a45c06bf55ed029122729b' => $vendorDir . '/thecodingmachine/safe/generated/opcache.php',
|
||||
'def61bf4fecd4d4bca7354919cd69302' => $vendorDir . '/thecodingmachine/safe/generated/openssl.php',
|
||||
'26bb010649a6d32d4120181458aa6ef2' => $vendorDir . '/thecodingmachine/safe/generated/outcontrol.php',
|
||||
'1212c201fe43c7492a085b2c71505e0f' => $vendorDir . '/thecodingmachine/safe/generated/password.php',
|
||||
'002ebcb842e2c0d5b7f67fe64cc93158' => $vendorDir . '/thecodingmachine/safe/generated/pcntl.php',
|
||||
'86df38612982dade72c7085ce7eca81f' => $vendorDir . '/thecodingmachine/safe/generated/pcre.php',
|
||||
'1cacc3e65f82a473fbd5507c7ce4385d' => $vendorDir . '/thecodingmachine/safe/generated/pdf.php',
|
||||
'1fc22f445c69ea8706e82fce301c0831' => $vendorDir . '/thecodingmachine/safe/generated/pgsql.php',
|
||||
'c70b42561584f7144bff38cd63c4eef3' => $vendorDir . '/thecodingmachine/safe/generated/posix.php',
|
||||
'9923214639c32ca5173db03a177d3b63' => $vendorDir . '/thecodingmachine/safe/generated/ps.php',
|
||||
|
@ -76,7 +76,6 @@ return array(
|
|||
'775b964f72f827a1bf87c65ab5b10800' => $vendorDir . '/thecodingmachine/safe/generated/sem.php',
|
||||
'816428bd69c29ab5e1ed622af5dca0cd' => $vendorDir . '/thecodingmachine/safe/generated/session.php',
|
||||
'5093e233bedbefaef0df262bfbab0a5c' => $vendorDir . '/thecodingmachine/safe/generated/shmop.php',
|
||||
'01352920b0151f17e671266e44b52536' => $vendorDir . '/thecodingmachine/safe/generated/simplexml.php',
|
||||
'b080617b1d949683c2e37f8f01dc0e15' => $vendorDir . '/thecodingmachine/safe/generated/sockets.php',
|
||||
'2708aa182ddcfe6ce27c96acaaa40f69' => $vendorDir . '/thecodingmachine/safe/generated/sodium.php',
|
||||
'f1b96cb260a5baeea9a7285cda82a1ec' => $vendorDir . '/thecodingmachine/safe/generated/solr.php',
|
||||
|
@ -98,6 +97,4 @@ return array(
|
|||
'4af1dca6db8c527c6eed27bff85ff0e5' => $vendorDir . '/thecodingmachine/safe/generated/yaz.php',
|
||||
'fe43ca06499ac37bc2dedd823af71eb5' => $vendorDir . '/thecodingmachine/safe/generated/zip.php',
|
||||
'356736db98a6834f0a886b8d509b0ecd' => $vendorDir . '/thecodingmachine/safe/generated/zlib.php',
|
||||
'9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
|
||||
'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||
);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
|
@ -10,8 +10,6 @@ return array(
|
|||
'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'),
|
||||
'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'),
|
||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
||||
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
|
||||
'Safe\\' => array($vendorDir . '/thecodingmachine/safe/lib', $vendorDir . '/thecodingmachine/safe/deprecated', $vendorDir . '/thecodingmachine/safe/generated'),
|
||||
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
|
||||
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
|
||||
'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
|
||||
|
|
|
@ -25,15 +25,38 @@ class ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
require __DIR__ . '/platform_check.php';
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
$includeFiles = \Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::$files;
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire19fc2ff1c0f9a92279c7979386bb2056($fileIdentifier, $file);
|
||||
}
|
||||
|
@ -42,16 +65,11 @@ class ComposerAutoloaderInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fileIdentifier
|
||||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
function composerRequire19fc2ff1c0f9a92279c7979386bb2056($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
|
||||
require $file;
|
||||
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,14 +7,20 @@ namespace Composer\Autoload;
|
|||
class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
||||
{
|
||||
public static $files = array (
|
||||
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
||||
'9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php',
|
||||
'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||
'a4ecaeafb8cfb009ad0e052c90355e98' => __DIR__ . '/..' . '/beberlei/assert/lib/Assert/functions.php',
|
||||
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||
'51fcf4e06c07cc00c920b44bcd900e7a' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/apc.php',
|
||||
'288267919fedd3829a7732b5fb202197' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/array.php',
|
||||
'a88cd08cfbf1600f7d5de6e587eee1fa' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/datetime.php',
|
||||
'47f619d9197b36cf5ab70738d7743fe2' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/libevent.php',
|
||||
'213c1c2258e2e5aa409a0af3e993b3a9' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/password.php',
|
||||
'ea6bb8a12ef9b68f6ada99058e530760' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/mssql.php',
|
||||
'9a29089eb3ce41a446744c68a00f118c' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/stats.php',
|
||||
'd5947c9df62650029c674c79176af68d' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/strings.php',
|
||||
'72243e5536b63e298acb6476f01f1aff' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/special_cases.php',
|
||||
'09f92ed6301edc510574c196c2b7d1af' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/mysqli.php',
|
||||
'3f648889e687f31c52f949ba8a9d0873' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/apache.php',
|
||||
'eeb4581d958421a4244aaa4167c6a575' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/apcu.php',
|
||||
'04cb0b3c1dac5b5ddb23c14e3d66dbe9' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/array.php',
|
||||
|
@ -35,6 +41,7 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
'fbd163fc68c5faf73d5ed4002ffd836d' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/fpm.php',
|
||||
'21b511999d61411fab0692ff8795bbed' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/ftp.php',
|
||||
'85fbd73fc92365cd90526b0ea03cae3a' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/funchand.php',
|
||||
'a2e4c6dfdbf36f56f1945ddcbd54e289' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/gettext.php',
|
||||
'51df9c146e0b7dcbdf358d8abd24dbdc' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/gmp.php',
|
||||
'93bb7fe678d7dcfb1322f8e3475a48b0' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/gnupg.php',
|
||||
'c171ba99cf316379ff66468392bf4950' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/hash.php',
|
||||
|
@ -44,7 +51,6 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
'c28a05f498c01b810a714f7214b7a8da' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/image.php',
|
||||
'8063cd92acdf00fd978b5599eb7cc142' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/imap.php',
|
||||
'8bd26dbe768e9c9599edad7b198e5446' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/info.php',
|
||||
'0c577fe603b029d4b65c84376b15dbd5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/ingres-ii.php',
|
||||
'd4362910bde43c0f956b52527effd7d4' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/inotify.php',
|
||||
'696ba49197d9b55f0428a12bb5a818e1' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/json.php',
|
||||
'9818aaa99c8647c63f8ef62b7a368160' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/ldap.php',
|
||||
|
@ -53,20 +59,14 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
'bdca804bb0904ea9f53f328dfc0bb8a5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/mailparse.php',
|
||||
'b0a3fcac3eaf55445796d6af26b89366' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/mbstring.php',
|
||||
'98de16b8db03eb0cb4d318b4402215a6' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/misc.php',
|
||||
'c112440003b56e243b192c11fa9d836e' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/msql.php',
|
||||
'7cefd81607cd21b8b3a15656eb6465f5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/mysql.php',
|
||||
'aaf438b080089c6d0686679cd34aa72e' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/mysqli.php',
|
||||
'df0ef890e9afbf95f3924feb1c7a89f3' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/mysqlndMs.php',
|
||||
'db595fee5972867e45c5327010d78735' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/mysqlndQc.php',
|
||||
'cbac956836b72483dcff1ac39d5c0a0f' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/network.php',
|
||||
'6c8f89dfbdc117d7871f572269363f25' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/oci8.php',
|
||||
'169a669966a45c06bf55ed029122729b' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/opcache.php',
|
||||
'def61bf4fecd4d4bca7354919cd69302' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/openssl.php',
|
||||
'26bb010649a6d32d4120181458aa6ef2' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/outcontrol.php',
|
||||
'1212c201fe43c7492a085b2c71505e0f' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/password.php',
|
||||
'002ebcb842e2c0d5b7f67fe64cc93158' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/pcntl.php',
|
||||
'86df38612982dade72c7085ce7eca81f' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/pcre.php',
|
||||
'1cacc3e65f82a473fbd5507c7ce4385d' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/pdf.php',
|
||||
'1fc22f445c69ea8706e82fce301c0831' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/pgsql.php',
|
||||
'c70b42561584f7144bff38cd63c4eef3' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/posix.php',
|
||||
'9923214639c32ca5173db03a177d3b63' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/ps.php',
|
||||
|
@ -77,7 +77,6 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
'775b964f72f827a1bf87c65ab5b10800' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/sem.php',
|
||||
'816428bd69c29ab5e1ed622af5dca0cd' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/session.php',
|
||||
'5093e233bedbefaef0df262bfbab0a5c' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/shmop.php',
|
||||
'01352920b0151f17e671266e44b52536' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/simplexml.php',
|
||||
'b080617b1d949683c2e37f8f01dc0e15' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/sockets.php',
|
||||
'2708aa182ddcfe6ce27c96acaaa40f69' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/sodium.php',
|
||||
'f1b96cb260a5baeea9a7285cda82a1ec' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/solr.php',
|
||||
|
@ -99,8 +98,6 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
'4af1dca6db8c527c6eed27bff85ff0e5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/yaz.php',
|
||||
'fe43ca06499ac37bc2dedd823af71eb5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/zip.php',
|
||||
'356736db98a6834f0a886b8d509b0ecd' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/zlib.php',
|
||||
'9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php',
|
||||
'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
|
@ -117,11 +114,6 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
array (
|
||||
'Webmozart\\Assert\\' => 17,
|
||||
),
|
||||
'S' =>
|
||||
array (
|
||||
'Symfony\\Polyfill\\Ctype\\' => 23,
|
||||
'Safe\\' => 5,
|
||||
),
|
||||
'P' =>
|
||||
array (
|
||||
'Prophecy\\' => 9,
|
||||
|
@ -162,16 +154,6 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
array (
|
||||
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
||||
),
|
||||
'Symfony\\Polyfill\\Ctype\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
|
||||
),
|
||||
'Safe\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/thecodingmachine/safe/lib',
|
||||
1 => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated',
|
||||
2 => __DIR__ . '/..' . '/thecodingmachine/safe/generated',
|
||||
),
|
||||
'Prophecy\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
|
||||
|
@ -627,6 +609,93 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
|
|||
'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
|
||||
'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
|
||||
'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
|
||||
'Safe\\DateTime' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/DateTime.php',
|
||||
'Safe\\DateTimeImmutable' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/DateTimeImmutable.php',
|
||||
'Safe\\Exceptions\\ApacheException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ApacheException.php',
|
||||
'Safe\\Exceptions\\ApcException' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/Exceptions/ApcException.php',
|
||||
'Safe\\Exceptions\\ApcuException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ApcuException.php',
|
||||
'Safe\\Exceptions\\ArrayException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ArrayException.php',
|
||||
'Safe\\Exceptions\\Bzip2Exception' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/Bzip2Exception.php',
|
||||
'Safe\\Exceptions\\CalendarException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/CalendarException.php',
|
||||
'Safe\\Exceptions\\ClassobjException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ClassobjException.php',
|
||||
'Safe\\Exceptions\\ComException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ComException.php',
|
||||
'Safe\\Exceptions\\CubridException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/CubridException.php',
|
||||
'Safe\\Exceptions\\CurlException' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/Exceptions/CurlException.php',
|
||||
'Safe\\Exceptions\\DatetimeException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/DatetimeException.php',
|
||||
'Safe\\Exceptions\\DirException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/DirException.php',
|
||||
'Safe\\Exceptions\\EioException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/EioException.php',
|
||||
'Safe\\Exceptions\\ErrorfuncException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ErrorfuncException.php',
|
||||
'Safe\\Exceptions\\ExecException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ExecException.php',
|
||||
'Safe\\Exceptions\\FileinfoException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/FileinfoException.php',
|
||||
'Safe\\Exceptions\\FilesystemException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/FilesystemException.php',
|
||||
'Safe\\Exceptions\\FilterException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/FilterException.php',
|
||||
'Safe\\Exceptions\\FpmException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/FpmException.php',
|
||||
'Safe\\Exceptions\\FtpException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/FtpException.php',
|
||||
'Safe\\Exceptions\\FunchandException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/FunchandException.php',
|
||||
'Safe\\Exceptions\\GettextException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/GettextException.php',
|
||||
'Safe\\Exceptions\\GmpException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/GmpException.php',
|
||||
'Safe\\Exceptions\\GnupgException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/GnupgException.php',
|
||||
'Safe\\Exceptions\\HashException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/HashException.php',
|
||||
'Safe\\Exceptions\\IbaseException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/IbaseException.php',
|
||||
'Safe\\Exceptions\\IbmDb2Exception' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/IbmDb2Exception.php',
|
||||
'Safe\\Exceptions\\IconvException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/IconvException.php',
|
||||
'Safe\\Exceptions\\ImageException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ImageException.php',
|
||||
'Safe\\Exceptions\\ImapException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ImapException.php',
|
||||
'Safe\\Exceptions\\InfoException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/InfoException.php',
|
||||
'Safe\\Exceptions\\InotifyException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/InotifyException.php',
|
||||
'Safe\\Exceptions\\JsonException' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/Exceptions/JsonException.php',
|
||||
'Safe\\Exceptions\\LdapException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/LdapException.php',
|
||||
'Safe\\Exceptions\\LibeventException' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/Exceptions/LibeventException.php',
|
||||
'Safe\\Exceptions\\LibxmlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/LibxmlException.php',
|
||||
'Safe\\Exceptions\\LzfException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/LzfException.php',
|
||||
'Safe\\Exceptions\\MailparseException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/MailparseException.php',
|
||||
'Safe\\Exceptions\\MbstringException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/MbstringException.php',
|
||||
'Safe\\Exceptions\\MiscException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/MiscException.php',
|
||||
'Safe\\Exceptions\\MssqlException' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/Exceptions/MssqlException.php',
|
||||
'Safe\\Exceptions\\MysqlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/MysqlException.php',
|
||||
'Safe\\Exceptions\\MysqliException' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/Exceptions/MysqliException.php',
|
||||
'Safe\\Exceptions\\NetworkException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/NetworkException.php',
|
||||
'Safe\\Exceptions\\Oci8Exception' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/Oci8Exception.php',
|
||||
'Safe\\Exceptions\\OpcacheException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/OpcacheException.php',
|
||||
'Safe\\Exceptions\\OpensslException' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/Exceptions/OpensslException.php',
|
||||
'Safe\\Exceptions\\OutcontrolException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/OutcontrolException.php',
|
||||
'Safe\\Exceptions\\PasswordException' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/Exceptions/PasswordException.php',
|
||||
'Safe\\Exceptions\\PcntlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/PcntlException.php',
|
||||
'Safe\\Exceptions\\PcreException' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/Exceptions/PcreException.php',
|
||||
'Safe\\Exceptions\\PgsqlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/PgsqlException.php',
|
||||
'Safe\\Exceptions\\PosixException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/PosixException.php',
|
||||
'Safe\\Exceptions\\PsException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/PsException.php',
|
||||
'Safe\\Exceptions\\PspellException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/PspellException.php',
|
||||
'Safe\\Exceptions\\ReadlineException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ReadlineException.php',
|
||||
'Safe\\Exceptions\\RpminfoException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/RpminfoException.php',
|
||||
'Safe\\Exceptions\\RrdException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/RrdException.php',
|
||||
'Safe\\Exceptions\\SafeExceptionInterface' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/Exceptions/SafeExceptionInterface.php',
|
||||
'Safe\\Exceptions\\SemException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SemException.php',
|
||||
'Safe\\Exceptions\\SessionException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SessionException.php',
|
||||
'Safe\\Exceptions\\ShmopException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ShmopException.php',
|
||||
'Safe\\Exceptions\\SimplexmlException' => __DIR__ . '/..' . '/thecodingmachine/safe/lib/Exceptions/SimplexmlException.php',
|
||||
'Safe\\Exceptions\\SocketsException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SocketsException.php',
|
||||
'Safe\\Exceptions\\SodiumException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SodiumException.php',
|
||||
'Safe\\Exceptions\\SolrException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SolrException.php',
|
||||
'Safe\\Exceptions\\SplException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SplException.php',
|
||||
'Safe\\Exceptions\\SqlsrvException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SqlsrvException.php',
|
||||
'Safe\\Exceptions\\SsdeepException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SsdeepException.php',
|
||||
'Safe\\Exceptions\\Ssh2Exception' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/Ssh2Exception.php',
|
||||
'Safe\\Exceptions\\StatsException' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/Exceptions/StatsException.php',
|
||||
'Safe\\Exceptions\\StreamException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/StreamException.php',
|
||||
'Safe\\Exceptions\\StringsException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/StringsException.php',
|
||||
'Safe\\Exceptions\\SwooleException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/SwooleException.php',
|
||||
'Safe\\Exceptions\\UodbcException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/UodbcException.php',
|
||||
'Safe\\Exceptions\\UopzException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/UopzException.php',
|
||||
'Safe\\Exceptions\\UrlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/UrlException.php',
|
||||
'Safe\\Exceptions\\VarException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/VarException.php',
|
||||
'Safe\\Exceptions\\XdiffException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/XdiffException.php',
|
||||
'Safe\\Exceptions\\XmlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/XmlException.php',
|
||||
'Safe\\Exceptions\\XmlrpcException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/XmlrpcException.php',
|
||||
'Safe\\Exceptions\\YamlException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/YamlException.php',
|
||||
'Safe\\Exceptions\\YazException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/YazException.php',
|
||||
'Safe\\Exceptions\\ZipException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ZipException.php',
|
||||
'Safe\\Exceptions\\ZlibException' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/Exceptions/ZlibException.php',
|
||||
'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
|
||||
'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php',
|
||||
'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
|
||||
|
|
|
@ -153,17 +153,17 @@
|
|||
},
|
||||
{
|
||||
"name": "chillerlan/php-settings-container",
|
||||
"version": "2.1.3",
|
||||
"version_normalized": "2.1.3.0",
|
||||
"version": "2.1.4",
|
||||
"version_normalized": "2.1.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/chillerlan/php-settings-container.git",
|
||||
"reference": "125dd573b45ffc7cabecf385986a356ba2c6f602"
|
||||
"reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/125dd573b45ffc7cabecf385986a356ba2c6f602",
|
||||
"reference": "125dd573b45ffc7cabecf385986a356ba2c6f602",
|
||||
"url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
|
||||
"reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -174,7 +174,7 @@
|
|||
"phan/phan": "^5.3",
|
||||
"phpunit/phpunit": "^9.5"
|
||||
},
|
||||
"time": "2022-03-09T13:18:58+00:00",
|
||||
"time": "2022-07-05T22:32:14+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
|
@ -293,17 +293,17 @@
|
|||
},
|
||||
{
|
||||
"name": "j4mie/idiorm",
|
||||
"version": "v1.5.7",
|
||||
"version_normalized": "1.5.7.0",
|
||||
"version": "dev-master",
|
||||
"version_normalized": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/j4mie/idiorm.git",
|
||||
"reference": "d23f97053ef5d0b988a02c6a71eb5c6118b2f5b4"
|
||||
"url": "https://github.com/aaronpk/idiorm.git",
|
||||
"reference": "efc8ea06698f53e2c479c7696f2b154c47c3a3cb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/j4mie/idiorm/zipball/d23f97053ef5d0b988a02c6a71eb5c6118b2f5b4",
|
||||
"reference": "d23f97053ef5d0b988a02c6a71eb5c6118b2f5b4",
|
||||
"url": "https://api.github.com/repos/aaronpk/idiorm/zipball/efc8ea06698f53e2c479c7696f2b154c47c3a3cb",
|
||||
"reference": "efc8ea06698f53e2c479c7696f2b154c47c3a3cb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -313,7 +313,8 @@
|
|||
"ext-pdo_sqlite": "*",
|
||||
"phpunit/phpunit": "^4.8"
|
||||
},
|
||||
"time": "2020-04-29T00:37:09+00:00",
|
||||
"time": "2022-03-26T15:19:01+00:00",
|
||||
"default-branch": true,
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
|
@ -321,7 +322,11 @@
|
|||
"idiorm.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"scripts": {
|
||||
"test": [
|
||||
"phpunit -c ./phpunit.xml"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"BSD-2-Clause",
|
||||
"BSD-3-Clause",
|
||||
|
@ -470,17 +475,17 @@
|
|||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.13.2",
|
||||
"version_normalized": "4.13.2.0",
|
||||
"version": "v4.14.0",
|
||||
"version_normalized": "4.14.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077"
|
||||
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
|
||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
||||
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -491,7 +496,7 @@
|
|||
"ircmaxell/php-yacc": "^0.0.7",
|
||||
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
||||
},
|
||||
"time": "2021-11-30T19:35:32+00:00",
|
||||
"time": "2022-05-31T20:59:12+00:00",
|
||||
"bin": [
|
||||
"bin/php-parse"
|
||||
],
|
||||
|
@ -523,23 +528,23 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
|
||||
},
|
||||
"install-path": "../nikic/php-parser"
|
||||
},
|
||||
{
|
||||
"name": "paragonie/constant_time_encoding",
|
||||
"version": "v2.4.0",
|
||||
"version_normalized": "2.4.0.0",
|
||||
"version": "v2.6.3",
|
||||
"version_normalized": "2.6.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/paragonie/constant_time_encoding.git",
|
||||
"reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c"
|
||||
"reference": "58c3f47f650c94ec05a151692652a868995d2938"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
|
||||
"reference": "f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c",
|
||||
"url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938",
|
||||
"reference": "58c3f47f650c94ec05a151692652a868995d2938",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -549,7 +554,7 @@
|
|||
"phpunit/phpunit": "^6|^7|^8|^9",
|
||||
"vimeo/psalm": "^1|^2|^3|^4"
|
||||
},
|
||||
"time": "2020-12-06T15:14:20+00:00",
|
||||
"time": "2022-06-14T06:56:20+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
|
@ -832,17 +837,17 @@
|
|||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "1.6.0",
|
||||
"version_normalized": "1.6.0.0",
|
||||
"version": "1.6.1",
|
||||
"version_normalized": "1.6.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
|
||||
"reference": "77a32518733312af16a44300404e945338981de3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
|
||||
"reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
||||
"reference": "77a32518733312af16a44300404e945338981de3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -853,7 +858,7 @@
|
|||
"ext-tokenizer": "*",
|
||||
"psalm/phar": "^4.8"
|
||||
},
|
||||
"time": "2022-01-04T19:58:01+00:00",
|
||||
"time": "2022-03-15T21:29:03+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@ -879,7 +884,7 @@
|
|||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
|
||||
},
|
||||
"install-path": "../phpdocumentor/type-resolver"
|
||||
},
|
||||
|
@ -955,36 +960,31 @@
|
|||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.1.2",
|
||||
"version_normalized": "1.1.2.0",
|
||||
"version": "1.8.1",
|
||||
"version_normalized": "1.8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "bcea0ae85868a89d5789c75f012c93129f842934"
|
||||
"reference": "8dbba631fa32f4b289404469c2afd6122fd61d67"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/bcea0ae85868a89d5789c75f012c93129f842934",
|
||||
"reference": "bcea0ae85868a89d5789c75f012c93129f842934",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/8dbba631fa32f4b289404469c2afd6122fd61d67",
|
||||
"reference": "8dbba631fa32f4b289404469c2afd6122fd61d67",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1|^8.0"
|
||||
"php": "^7.2|^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan-shim": "*"
|
||||
},
|
||||
"time": "2021-11-09T12:41:09+00:00",
|
||||
"time": "2022-07-12T16:08:06+00:00",
|
||||
"bin": [
|
||||
"phpstan",
|
||||
"phpstan.phar"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"files": [
|
||||
|
@ -996,6 +996,10 @@
|
|||
"MIT"
|
||||
],
|
||||
"description": "PHPStan - PHP Static Analysis Tool",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpstan/issues",
|
||||
"source": "https://github.com/phpstan/phpstan/tree/1.8.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/ondrejmirtes",
|
||||
|
@ -1839,17 +1843,17 @@
|
|||
},
|
||||
{
|
||||
"name": "sebastian/environment",
|
||||
"version": "5.1.3",
|
||||
"version_normalized": "5.1.3.0",
|
||||
"version": "5.1.4",
|
||||
"version_normalized": "5.1.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/environment.git",
|
||||
"reference": "388b6ced16caa751030f6a69e588299fa09200ac"
|
||||
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
|
||||
"reference": "388b6ced16caa751030f6a69e588299fa09200ac",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
|
||||
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1861,7 +1865,7 @@
|
|||
"suggest": {
|
||||
"ext-posix": "*"
|
||||
},
|
||||
"time": "2020-09-28T05:52:38+00:00",
|
||||
"time": "2022-04-03T09:37:03+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@ -1893,7 +1897,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/environment/issues",
|
||||
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
|
||||
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2469,17 +2473,17 @@
|
|||
},
|
||||
{
|
||||
"name": "spomky-labs/otphp",
|
||||
"version": "v10.0.1",
|
||||
"version_normalized": "10.0.1.0",
|
||||
"version": "v10.0.3",
|
||||
"version_normalized": "10.0.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Spomky-Labs/otphp.git",
|
||||
"reference": "f44cce5a9db4b8da410215d992110482c931232f"
|
||||
"reference": "9784d9f7c790eed26e102d6c78f12c754036c366"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/f44cce5a9db4b8da410215d992110482c931232f",
|
||||
"reference": "f44cce5a9db4b8da410215d992110482c931232f",
|
||||
"url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9784d9f7c790eed26e102d6c78f12c754036c366",
|
||||
"reference": "9784d9f7c790eed26e102d6c78f12c754036c366",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2487,7 +2491,7 @@
|
|||
"ext-mbstring": "*",
|
||||
"paragonie/constant_time_encoding": "^2.0",
|
||||
"php": "^7.2|^8.0",
|
||||
"thecodingmachine/safe": "^0.1.14|^1.0"
|
||||
"thecodingmachine/safe": "^0.1.14|^1.0|^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-coveralls/php-coveralls": "^2.0",
|
||||
|
@ -2497,9 +2501,9 @@
|
|||
"phpstan/phpstan-phpunit": "^0.12",
|
||||
"phpstan/phpstan-strict-rules": "^0.12",
|
||||
"phpunit/phpunit": "^8.0",
|
||||
"thecodingmachine/phpstan-safe-rule": "^1.0"
|
||||
"thecodingmachine/phpstan-safe-rule": "^1.0 || ^2.0"
|
||||
},
|
||||
"time": "2020-01-28T09:24:19+00:00",
|
||||
"time": "2022-03-17T08:00:35+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@ -2541,140 +2545,54 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Spomky-Labs/otphp/issues",
|
||||
"source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.1"
|
||||
"source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.3"
|
||||
},
|
||||
"install-path": "../spomky-labs/otphp"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"version": "v1.25.0",
|
||||
"version_normalized": "1.25.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
|
||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"provide": {
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ctype": "For best performance"
|
||||
},
|
||||
"time": "2021-10-20T20:35:02+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.23-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Ctype\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Gert de Pagter",
|
||||
"email": "BackEndTea@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill for ctype functions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"ctype",
|
||||
"polyfill",
|
||||
"portable"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"install-path": "../symfony/polyfill-ctype"
|
||||
},
|
||||
{
|
||||
"name": "thecodingmachine/safe",
|
||||
"version": "v1.3.3",
|
||||
"version_normalized": "1.3.3.0",
|
||||
"version": "v2.2.1",
|
||||
"version_normalized": "2.2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thecodingmachine/safe.git",
|
||||
"reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc"
|
||||
"reference": "2a8d758fd17763faf86e4aa798193e17b9fac38c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
|
||||
"reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
|
||||
"url": "https://api.github.com/repos/thecodingmachine/safe/zipball/2a8d758fd17763faf86e4aa798193e17b9fac38c",
|
||||
"reference": "2a8d758fd17763faf86e4aa798193e17b9fac38c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2"
|
||||
"php": "^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^0.12",
|
||||
"phpstan/phpstan": "^1.5",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.2",
|
||||
"thecodingmachine/phpstan-strict-rules": "^0.12"
|
||||
"thecodingmachine/phpstan-strict-rules": "^1.0"
|
||||
},
|
||||
"time": "2020-10-28T17:51:34+00:00",
|
||||
"time": "2022-06-09T15:36:45+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.1-dev"
|
||||
"dev-master": "2.2.x-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Safe\\": [
|
||||
"lib/",
|
||||
"deprecated/",
|
||||
"generated/"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"deprecated/apc.php",
|
||||
"deprecated/array.php",
|
||||
"deprecated/datetime.php",
|
||||
"deprecated/libevent.php",
|
||||
"deprecated/password.php",
|
||||
"deprecated/mssql.php",
|
||||
"deprecated/stats.php",
|
||||
"deprecated/strings.php",
|
||||
"lib/special_cases.php",
|
||||
"deprecated/mysqli.php",
|
||||
"generated/apache.php",
|
||||
"generated/apcu.php",
|
||||
"generated/array.php",
|
||||
|
@ -2695,6 +2613,7 @@
|
|||
"generated/fpm.php",
|
||||
"generated/ftp.php",
|
||||
"generated/funchand.php",
|
||||
"generated/gettext.php",
|
||||
"generated/gmp.php",
|
||||
"generated/gnupg.php",
|
||||
"generated/hash.php",
|
||||
|
@ -2704,7 +2623,6 @@
|
|||
"generated/image.php",
|
||||
"generated/imap.php",
|
||||
"generated/info.php",
|
||||
"generated/ingres-ii.php",
|
||||
"generated/inotify.php",
|
||||
"generated/json.php",
|
||||
"generated/ldap.php",
|
||||
|
@ -2713,20 +2631,14 @@
|
|||
"generated/mailparse.php",
|
||||
"generated/mbstring.php",
|
||||
"generated/misc.php",
|
||||
"generated/msql.php",
|
||||
"generated/mysql.php",
|
||||
"generated/mysqli.php",
|
||||
"generated/mysqlndMs.php",
|
||||
"generated/mysqlndQc.php",
|
||||
"generated/network.php",
|
||||
"generated/oci8.php",
|
||||
"generated/opcache.php",
|
||||
"generated/openssl.php",
|
||||
"generated/outcontrol.php",
|
||||
"generated/password.php",
|
||||
"generated/pcntl.php",
|
||||
"generated/pcre.php",
|
||||
"generated/pdf.php",
|
||||
"generated/pgsql.php",
|
||||
"generated/posix.php",
|
||||
"generated/ps.php",
|
||||
|
@ -2737,7 +2649,6 @@
|
|||
"generated/sem.php",
|
||||
"generated/session.php",
|
||||
"generated/shmop.php",
|
||||
"generated/simplexml.php",
|
||||
"generated/sockets.php",
|
||||
"generated/sodium.php",
|
||||
"generated/solr.php",
|
||||
|
@ -2759,6 +2670,13 @@
|
|||
"generated/yaz.php",
|
||||
"generated/zip.php",
|
||||
"generated/zlib.php"
|
||||
],
|
||||
"classmap": [
|
||||
"lib/DateTime.php",
|
||||
"lib/DateTimeImmutable.php",
|
||||
"lib/Exceptions/",
|
||||
"deprecated/Exceptions/",
|
||||
"generated/Exceptions/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
|
@ -2768,7 +2686,7 @@
|
|||
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
|
||||
"support": {
|
||||
"issues": "https://github.com/thecodingmachine/safe/issues",
|
||||
"source": "https://github.com/thecodingmachine/safe/tree/v1.3.3"
|
||||
"source": "https://github.com/thecodingmachine/safe/tree/v2.2.1"
|
||||
},
|
||||
"install-path": "../thecodingmachine/safe"
|
||||
},
|
||||
|
@ -2827,22 +2745,22 @@
|
|||
},
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
"version": "1.10.0",
|
||||
"version_normalized": "1.10.0.0",
|
||||
"version": "1.11.0",
|
||||
"version_normalized": "1.11.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/webmozarts/assert.git",
|
||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
|
||||
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
|
||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
|
||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
||||
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0",
|
||||
"symfony/polyfill-ctype": "^1.8"
|
||||
"ext-ctype": "*",
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<0.12.20",
|
||||
|
@ -2851,7 +2769,7 @@
|
|||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.13"
|
||||
},
|
||||
"time": "2021-03-09T10:59:23+00:00",
|
||||
"time": "2022-06-03T18:03:27+00:00",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
|
@ -2882,7 +2800,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/webmozarts/assert/issues",
|
||||
"source": "https://github.com/webmozarts/assert/tree/1.10.0"
|
||||
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
||||
},
|
||||
"install-path": "../webmozart/assert"
|
||||
}
|
||||
|
@ -2921,7 +2839,6 @@
|
|||
"sebastian/resource-operations",
|
||||
"sebastian/type",
|
||||
"sebastian/version",
|
||||
"symfony/polyfill-ctype",
|
||||
"theseer/tokenizer",
|
||||
"webmozart/assert"
|
||||
]
|
||||
|
|
|
@ -1,409 +1,402 @@
|
|||
<?php return array(
|
||||
'root' => array(
|
||||
'name' => '__root__',
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => '1e668c7572346f6adc47cc0359c2fd616481e730',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'reference' => '4b6161892000cb2b8392dce92a9cf2cabdf2d20e',
|
||||
'name' => '__root__',
|
||||
'dev' => true,
|
||||
),
|
||||
'versions' => array(
|
||||
'__root__' => array(
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => '1e668c7572346f6adc47cc0359c2fd616481e730',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
'reference' => '4b6161892000cb2b8392dce92a9cf2cabdf2d20e',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'beberlei/assert' => array(
|
||||
'pretty_version' => 'v3.3.2',
|
||||
'version' => '3.3.2.0',
|
||||
'reference' => 'cb70015c04be1baee6f5f5c953703347c0ac1655',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../beberlei/assert',
|
||||
'aliases' => array(),
|
||||
'reference' => 'cb70015c04be1baee6f5f5c953703347c0ac1655',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'chillerlan/php-qrcode' => array(
|
||||
'pretty_version' => '4.3.3',
|
||||
'version' => '4.3.3.0',
|
||||
'reference' => '6356b246948ac1025882b3f55e7c68ebd4515ae3',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../chillerlan/php-qrcode',
|
||||
'aliases' => array(),
|
||||
'reference' => '6356b246948ac1025882b3f55e7c68ebd4515ae3',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'chillerlan/php-settings-container' => array(
|
||||
'pretty_version' => '2.1.3',
|
||||
'version' => '2.1.3.0',
|
||||
'reference' => '125dd573b45ffc7cabecf385986a356ba2c6f602',
|
||||
'pretty_version' => '2.1.4',
|
||||
'version' => '2.1.4.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../chillerlan/php-settings-container',
|
||||
'aliases' => array(),
|
||||
'reference' => '1beb7df3c14346d4344b0b2e12f6f9a74feabd4a',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'doctrine/instantiator' => array(
|
||||
'pretty_version' => '1.4.1',
|
||||
'version' => '1.4.1.0',
|
||||
'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../doctrine/instantiator',
|
||||
'aliases' => array(),
|
||||
'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'j4mie/idiorm' => array(
|
||||
'pretty_version' => 'v1.5.7',
|
||||
'version' => '1.5.7.0',
|
||||
'reference' => 'd23f97053ef5d0b988a02c6a71eb5c6118b2f5b4',
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../j4mie/idiorm',
|
||||
'aliases' => array(),
|
||||
'aliases' => array(
|
||||
0 => '9999999-dev',
|
||||
),
|
||||
'reference' => 'efc8ea06698f53e2c479c7696f2b154c47c3a3cb',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'mervick/material-design-icons' => array(
|
||||
'pretty_version' => '2.2.0',
|
||||
'version' => '2.2.0.0',
|
||||
'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../mervick/material-design-icons',
|
||||
'aliases' => array(),
|
||||
'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'myclabs/deep-copy' => array(
|
||||
'pretty_version' => '1.11.0',
|
||||
'version' => '1.11.0.0',
|
||||
'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../myclabs/deep-copy',
|
||||
'aliases' => array(),
|
||||
'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'nikic/php-parser' => array(
|
||||
'pretty_version' => 'v4.13.2',
|
||||
'version' => '4.13.2.0',
|
||||
'reference' => '210577fe3cf7badcc5814d99455df46564f3c077',
|
||||
'pretty_version' => 'v4.14.0',
|
||||
'version' => '4.14.0.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../nikic/php-parser',
|
||||
'aliases' => array(),
|
||||
'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'paragonie/constant_time_encoding' => array(
|
||||
'pretty_version' => 'v2.4.0',
|
||||
'version' => '2.4.0.0',
|
||||
'reference' => 'f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c',
|
||||
'pretty_version' => 'v2.6.3',
|
||||
'version' => '2.6.3.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../paragonie/constant_time_encoding',
|
||||
'aliases' => array(),
|
||||
'reference' => '58c3f47f650c94ec05a151692652a868995d2938',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'phar-io/manifest' => array(
|
||||
'pretty_version' => '2.0.3',
|
||||
'version' => '2.0.3.0',
|
||||
'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phar-io/manifest',
|
||||
'aliases' => array(),
|
||||
'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phar-io/version' => array(
|
||||
'pretty_version' => '3.2.1',
|
||||
'version' => '3.2.1.0',
|
||||
'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phar-io/version',
|
||||
'aliases' => array(),
|
||||
'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpdocumentor/reflection-common' => array(
|
||||
'pretty_version' => '2.2.0',
|
||||
'version' => '2.2.0.0',
|
||||
'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
|
||||
'aliases' => array(),
|
||||
'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpdocumentor/reflection-docblock' => array(
|
||||
'pretty_version' => '5.3.0',
|
||||
'version' => '5.3.0.0',
|
||||
'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
|
||||
'aliases' => array(),
|
||||
'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpdocumentor/type-resolver' => array(
|
||||
'pretty_version' => '1.6.0',
|
||||
'version' => '1.6.0.0',
|
||||
'reference' => '93ebd0014cab80c4ea9f5e297ea48672f1b87706',
|
||||
'pretty_version' => '1.6.1',
|
||||
'version' => '1.6.1.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
|
||||
'aliases' => array(),
|
||||
'reference' => '77a32518733312af16a44300404e945338981de3',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpspec/prophecy' => array(
|
||||
'pretty_version' => 'v1.15.0',
|
||||
'version' => '1.15.0.0',
|
||||
'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpspec/prophecy',
|
||||
'aliases' => array(),
|
||||
'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpstan/phpstan' => array(
|
||||
'pretty_version' => '1.1.2',
|
||||
'version' => '1.1.2.0',
|
||||
'reference' => 'bcea0ae85868a89d5789c75f012c93129f842934',
|
||||
'pretty_version' => '1.8.1',
|
||||
'version' => '1.8.1.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpstan/phpstan',
|
||||
'aliases' => array(),
|
||||
'reference' => '8dbba631fa32f4b289404469c2afd6122fd61d67',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpunit/php-code-coverage' => array(
|
||||
'pretty_version' => '9.2.15',
|
||||
'version' => '9.2.15.0',
|
||||
'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
|
||||
'aliases' => array(),
|
||||
'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpunit/php-file-iterator' => array(
|
||||
'pretty_version' => '3.0.6',
|
||||
'version' => '3.0.6.0',
|
||||
'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
|
||||
'aliases' => array(),
|
||||
'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpunit/php-invoker' => array(
|
||||
'pretty_version' => '3.1.1',
|
||||
'version' => '3.1.1.0',
|
||||
'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpunit/php-invoker',
|
||||
'aliases' => array(),
|
||||
'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpunit/php-text-template' => array(
|
||||
'pretty_version' => '2.0.4',
|
||||
'version' => '2.0.4.0',
|
||||
'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpunit/php-text-template',
|
||||
'aliases' => array(),
|
||||
'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpunit/php-timer' => array(
|
||||
'pretty_version' => '5.0.3',
|
||||
'version' => '5.0.3.0',
|
||||
'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpunit/php-timer',
|
||||
'aliases' => array(),
|
||||
'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'phpunit/phpunit' => array(
|
||||
'pretty_version' => '9.5.16',
|
||||
'version' => '9.5.16.0',
|
||||
'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../phpunit/phpunit',
|
||||
'aliases' => array(),
|
||||
'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/cli-parser' => array(
|
||||
'pretty_version' => '1.0.1',
|
||||
'version' => '1.0.1.0',
|
||||
'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/cli-parser',
|
||||
'aliases' => array(),
|
||||
'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/code-unit' => array(
|
||||
'pretty_version' => '1.0.8',
|
||||
'version' => '1.0.8.0',
|
||||
'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/code-unit',
|
||||
'aliases' => array(),
|
||||
'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/code-unit-reverse-lookup' => array(
|
||||
'pretty_version' => '2.0.3',
|
||||
'version' => '2.0.3.0',
|
||||
'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup',
|
||||
'aliases' => array(),
|
||||
'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/comparator' => array(
|
||||
'pretty_version' => '4.0.6',
|
||||
'version' => '4.0.6.0',
|
||||
'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/comparator',
|
||||
'aliases' => array(),
|
||||
'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/complexity' => array(
|
||||
'pretty_version' => '2.0.2',
|
||||
'version' => '2.0.2.0',
|
||||
'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/complexity',
|
||||
'aliases' => array(),
|
||||
'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/diff' => array(
|
||||
'pretty_version' => '4.0.4',
|
||||
'version' => '4.0.4.0',
|
||||
'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/diff',
|
||||
'aliases' => array(),
|
||||
'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/environment' => array(
|
||||
'pretty_version' => '5.1.3',
|
||||
'version' => '5.1.3.0',
|
||||
'reference' => '388b6ced16caa751030f6a69e588299fa09200ac',
|
||||
'pretty_version' => '5.1.4',
|
||||
'version' => '5.1.4.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/environment',
|
||||
'aliases' => array(),
|
||||
'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/exporter' => array(
|
||||
'pretty_version' => '4.0.4',
|
||||
'version' => '4.0.4.0',
|
||||
'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/exporter',
|
||||
'aliases' => array(),
|
||||
'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/global-state' => array(
|
||||
'pretty_version' => '5.0.5',
|
||||
'version' => '5.0.5.0',
|
||||
'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/global-state',
|
||||
'aliases' => array(),
|
||||
'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/lines-of-code' => array(
|
||||
'pretty_version' => '1.0.3',
|
||||
'version' => '1.0.3.0',
|
||||
'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/lines-of-code',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/object-enumerator' => array(
|
||||
'pretty_version' => '4.0.4',
|
||||
'version' => '4.0.4.0',
|
||||
'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/object-enumerator',
|
||||
'aliases' => array(),
|
||||
'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/object-reflector' => array(
|
||||
'pretty_version' => '2.0.4',
|
||||
'version' => '2.0.4.0',
|
||||
'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/object-reflector',
|
||||
'aliases' => array(),
|
||||
'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/recursion-context' => array(
|
||||
'pretty_version' => '4.0.4',
|
||||
'version' => '4.0.4.0',
|
||||
'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/recursion-context',
|
||||
'aliases' => array(),
|
||||
'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/resource-operations' => array(
|
||||
'pretty_version' => '3.0.3',
|
||||
'version' => '3.0.3.0',
|
||||
'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/resource-operations',
|
||||
'aliases' => array(),
|
||||
'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/type' => array(
|
||||
'pretty_version' => '2.3.4',
|
||||
'version' => '2.3.4.0',
|
||||
'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/type',
|
||||
'aliases' => array(),
|
||||
'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'sebastian/version' => array(
|
||||
'pretty_version' => '3.0.2',
|
||||
'version' => '3.0.2.0',
|
||||
'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../sebastian/version',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'spomky-labs/otphp' => array(
|
||||
'pretty_version' => 'v10.0.1',
|
||||
'version' => '10.0.1.0',
|
||||
'reference' => 'f44cce5a9db4b8da410215d992110482c931232f',
|
||||
'pretty_version' => 'v10.0.3',
|
||||
'version' => '10.0.3.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../spomky-labs/otphp',
|
||||
'aliases' => array(),
|
||||
'reference' => '9784d9f7c790eed26e102d6c78f12c754036c366',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'symfony/polyfill-ctype' => array(
|
||||
'pretty_version' => 'v1.25.0',
|
||||
'version' => '1.25.0.0',
|
||||
'reference' => '30885182c981ab175d4d034db0f6f469898070ab',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
||||
'aliases' => array(),
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'thecodingmachine/safe' => array(
|
||||
'pretty_version' => 'v1.3.3',
|
||||
'version' => '1.3.3.0',
|
||||
'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc',
|
||||
'pretty_version' => 'v2.2.1',
|
||||
'version' => '2.2.1.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../thecodingmachine/safe',
|
||||
'aliases' => array(),
|
||||
'reference' => '2a8d758fd17763faf86e4aa798193e17b9fac38c',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'theseer/tokenizer' => array(
|
||||
'pretty_version' => '1.2.1',
|
||||
'version' => '1.2.1.0',
|
||||
'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../theseer/tokenizer',
|
||||
'aliases' => array(),
|
||||
'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
'webmozart/assert' => array(
|
||||
'pretty_version' => '1.10.0',
|
||||
'version' => '1.10.0.0',
|
||||
'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
|
||||
'pretty_version' => '1.11.0',
|
||||
'version' => '1.11.0.0',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../webmozart/assert',
|
||||
'aliases' => array(),
|
||||
'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991',
|
||||
'dev_requirement' => true,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
$issues = array();
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70400)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
|
||||
if (!(PHP_VERSION_ID >= 80000)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.0". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
|
||||
if ($issues) {
|
||||
|
|
|
@ -2209,14 +2209,17 @@
|
|||
// --- ArrayAccess --- //
|
||||
// --------------------- //
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetExists($key) {
|
||||
return array_key_exists($key, $this->_data);
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetGet($key) {
|
||||
return $this->get($key);
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetSet($key, $value) {
|
||||
if(is_null($key)) {
|
||||
throw new InvalidArgumentException('You must specify a key/array index.');
|
||||
|
@ -2224,6 +2227,7 @@
|
|||
$this->set($key, $value);
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetUnset($key) {
|
||||
unset($this->_data[$key]);
|
||||
unset($this->_dirty_fields[$key]);
|
||||
|
@ -2445,6 +2449,7 @@
|
|||
* Get the number of records in the result set
|
||||
* @return int
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function count() {
|
||||
return count($this->_results);
|
||||
}
|
||||
|
@ -2454,6 +2459,7 @@
|
|||
* over the result set.
|
||||
* @return \ArrayIterator
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function getIterator() {
|
||||
return new ArrayIterator($this->_results);
|
||||
}
|
||||
|
@ -2463,6 +2469,7 @@
|
|||
* @param int|string $offset
|
||||
* @return bool
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetExists($offset) {
|
||||
return isset($this->_results[$offset]);
|
||||
}
|
||||
|
@ -2472,6 +2479,7 @@
|
|||
* @param int|string $offset
|
||||
* @return mixed
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetGet($offset) {
|
||||
return $this->_results[$offset];
|
||||
}
|
||||
|
@ -2481,6 +2489,7 @@
|
|||
* @param int|string $offset
|
||||
* @param mixed $value
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetSet($offset, $value) {
|
||||
$this->_results[$offset] = $value;
|
||||
}
|
||||
|
@ -2489,10 +2498,19 @@
|
|||
* ArrayAccess
|
||||
* @param int|string $offset
|
||||
*/
|
||||
#[\ReturnTypeWillChange]
|
||||
public function offsetUnset($offset) {
|
||||
unset($this->_results[$offset]);
|
||||
}
|
||||
|
||||
public function __serialize() {
|
||||
return $this->serialize();
|
||||
}
|
||||
|
||||
public function __unserialize($data) {
|
||||
$this->unserialize($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Serializable
|
||||
* @return string
|
||||
|
|
|
@ -3,10 +3,10 @@ PHP Parser
|
|||
|
||||
[![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
|
||||
|
||||
This is a PHP 5.2 to PHP 8.0 parser written in PHP. Its purpose is to simplify static code analysis and
|
||||
This is a PHP 5.2 to PHP 8.1 parser written in PHP. Its purpose is to simplify static code analysis and
|
||||
manipulation.
|
||||
|
||||
[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.0).
|
||||
[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.1).
|
||||
|
||||
[Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
|
||||
|
||||
|
|
|
@ -689,9 +689,7 @@ array_expr:
|
|||
|
||||
scalar_dereference:
|
||||
array_expr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
||||
| T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']'
|
||||
{ $attrs = attributes(); $attrs['kind'] = strKind($1);
|
||||
$$ = Expr\ArrayDimFetch[new Scalar\String_(Scalar\String_::parse($1), $attrs), $3]; }
|
||||
| T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[Scalar\String_::fromString($1, attributes()), $3]; }
|
||||
| constant '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
||||
| scalar_dereference '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
||||
/* alternative array syntax missing intentionally */
|
||||
|
@ -793,10 +791,8 @@ ctor_arguments:
|
|||
|
||||
common_scalar:
|
||||
T_LNUMBER { $$ = $this->parseLNumber($1, attributes(), true); }
|
||||
| T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
|
||||
| T_CONSTANT_ENCAPSED_STRING
|
||||
{ $attrs = attributes(); $attrs['kind'] = strKind($1);
|
||||
$$ = new Scalar\String_(Scalar\String_::parse($1, false), $attrs); }
|
||||
| T_DNUMBER { $$ = Scalar\DNumber::fromString($1, attributes()); }
|
||||
| T_CONSTANT_ENCAPSED_STRING { $$ = Scalar\String_::fromString($1, attributes(), false); }
|
||||
| T_LINE { $$ = Scalar\MagicConst\Line[]; }
|
||||
| T_FILE { $$ = Scalar\MagicConst\File[]; }
|
||||
| T_DIR { $$ = Scalar\MagicConst\Dir[]; }
|
||||
|
|
|
@ -382,8 +382,18 @@ enum_case_expr:
|
|||
|
||||
class_entry_type:
|
||||
T_CLASS { $$ = 0; }
|
||||
| T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
|
||||
| T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
|
||||
| class_modifiers T_CLASS { $$ = $1; }
|
||||
;
|
||||
|
||||
class_modifiers:
|
||||
class_modifier { $$ = $1; }
|
||||
| class_modifiers class_modifier { $this->checkClassModifier($1, $2, #2); $$ = $1 | $2; }
|
||||
;
|
||||
|
||||
class_modifier:
|
||||
T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
|
||||
| T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
|
||||
| T_READONLY { $$ = Stmt\Class_::MODIFIER_READONLY; }
|
||||
;
|
||||
|
||||
extends_from:
|
||||
|
@ -1014,9 +1024,7 @@ dereferencable_scalar:
|
|||
{ $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
|
||||
$$ = new Expr\Array_($3, $attrs); }
|
||||
| array_short_syntax { $$ = $1; }
|
||||
| T_CONSTANT_ENCAPSED_STRING
|
||||
{ $attrs = attributes(); $attrs['kind'] = strKind($1);
|
||||
$$ = new Scalar\String_(Scalar\String_::parse($1), $attrs); }
|
||||
| T_CONSTANT_ENCAPSED_STRING { $$ = Scalar\String_::fromString($1, attributes()); }
|
||||
| '"' encaps_list '"'
|
||||
{ $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
|
||||
parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
|
||||
|
@ -1024,7 +1032,7 @@ dereferencable_scalar:
|
|||
|
||||
scalar:
|
||||
T_LNUMBER { $$ = $this->parseLNumber($1, attributes()); }
|
||||
| T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
|
||||
| T_DNUMBER { $$ = Scalar\DNumber::fromString($1, attributes()); }
|
||||
| dereferencable_scalar { $$ = $1; }
|
||||
| constant { $$ = $1; }
|
||||
| class_constant { $$ = $1; }
|
||||
|
|
|
@ -128,14 +128,6 @@ function resolveMacros($code) {
|
|||
. ' else { ' . $args[0] . ' = null; }';
|
||||
}
|
||||
|
||||
if ('strKind' === $name) {
|
||||
assertArgs(1, $args, $name);
|
||||
|
||||
return '(' . $args[0] . '[0] === "\'" || (' . $args[0] . '[1] === "\'" && '
|
||||
. '(' . $args[0] . '[0] === \'b\' || ' . $args[0] . '[0] === \'B\')) '
|
||||
. '? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED)';
|
||||
}
|
||||
|
||||
if ('prependLeadingComments' === $name) {
|
||||
assertArgs(1, $args, $name);
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ class Class_ extends Declaration
|
|||
* @return $this The builder instance (for fluid interface)
|
||||
*/
|
||||
public function makeAbstract() {
|
||||
$this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
|
||||
$this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -78,7 +78,13 @@ class Class_ extends Declaration
|
|||
* @return $this The builder instance (for fluid interface)
|
||||
*/
|
||||
public function makeFinal() {
|
||||
$this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
|
||||
$this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function makeReadonly() {
|
||||
$this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_READONLY);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
|
|
@ -310,4 +310,13 @@ final class BuilderHelpers
|
|||
Stmt\Class_::verifyModifier($modifiers, $modifier);
|
||||
return $modifiers | $modifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a modifier and returns new modifier bitmask.
|
||||
* @return int New modifiers
|
||||
*/
|
||||
public static function addClassModifier(int $existingModifiers, int $modifierToSet) : int {
|
||||
Stmt\Class_::verifyClassModifier($existingModifiers, $modifierToSet);
|
||||
return $existingModifiers | $modifierToSet;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ class Const_ extends NodeAbstract
|
|||
/** @var Expr Value */
|
||||
public $value;
|
||||
|
||||
/** @var Name Namespaced name (if using NameResolver) */
|
||||
/** @var Name|null Namespaced name (if using NameResolver) */
|
||||
public $namespacedName;
|
||||
|
||||
/**
|
||||
|
|
|
@ -24,6 +24,17 @@ class DNumber extends Scalar
|
|||
return ['value'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed[] $attributes
|
||||
*/
|
||||
public static function fromString(string $str, array $attributes = []): DNumber
|
||||
{
|
||||
$attributes['rawValue'] = $str;
|
||||
$float = self::parse($str);
|
||||
|
||||
return new DNumber($float, $attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
|
|
|
@ -41,6 +41,8 @@ class LNumber extends Scalar
|
|||
* @return LNumber The constructed LNumber, including kind attribute
|
||||
*/
|
||||
public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
|
||||
$attributes['rawValue'] = $str;
|
||||
|
||||
$str = str_replace('_', '', $str);
|
||||
|
||||
if ('0' !== $str[0] || '0' === $str) {
|
||||
|
|
|
@ -42,6 +42,22 @@ class String_ extends Scalar
|
|||
return ['value'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
|
||||
*/
|
||||
public static function fromString(string $str, array $attributes = [], bool $parseUnicodeEscape = true): self
|
||||
{
|
||||
$attributes['kind'] = ($str[0] === "'" || ($str[1] === "'" && ($str[0] === 'b' || $str[0] === 'B')))
|
||||
? Scalar\String_::KIND_SINGLE_QUOTED
|
||||
: Scalar\String_::KIND_DOUBLE_QUOTED;
|
||||
|
||||
$attributes['rawValue'] = $str;
|
||||
|
||||
$string = self::parse($str, $parseUnicodeEscape);
|
||||
|
||||
return new self($string, $attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
|
|
|
@ -13,7 +13,7 @@ abstract class ClassLike extends Node\Stmt
|
|||
/** @var Node\AttributeGroup[] PHP attribute groups */
|
||||
public $attrGroups;
|
||||
|
||||
/** @var Node\Name Namespaced name (if using NameResolver) */
|
||||
/** @var Node\Name|null Namespaced name (if using NameResolver) */
|
||||
public $namespacedName;
|
||||
|
||||
/**
|
||||
|
|
|
@ -68,6 +68,10 @@ class Class_ extends ClassLike
|
|||
return (bool) ($this->flags & self::MODIFIER_FINAL);
|
||||
}
|
||||
|
||||
public function isReadonly() : bool {
|
||||
return (bool) ($this->flags & self::MODIFIER_READONLY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the class is anonymous.
|
||||
*
|
||||
|
@ -77,6 +81,27 @@ class Class_ extends ClassLike
|
|||
return null === $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
public static function verifyClassModifier($a, $b) {
|
||||
if ($a & self::MODIFIER_ABSTRACT && $b & self::MODIFIER_ABSTRACT) {
|
||||
throw new Error('Multiple abstract modifiers are not allowed');
|
||||
}
|
||||
|
||||
if ($a & self::MODIFIER_FINAL && $b & self::MODIFIER_FINAL) {
|
||||
throw new Error('Multiple final modifiers are not allowed');
|
||||
}
|
||||
|
||||
if ($a & self::MODIFIER_READONLY && $b & self::MODIFIER_READONLY) {
|
||||
throw new Error('Multiple readonly modifiers are not allowed');
|
||||
}
|
||||
|
||||
if ($a & 48 && $b & 48) {
|
||||
throw new Error('Cannot use the final modifier on an abstract class');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
|
|
|
@ -20,7 +20,7 @@ class Function_ extends Node\Stmt implements FunctionLike
|
|||
/** @var Node\AttributeGroup[] PHP attribute groups */
|
||||
public $attrGroups;
|
||||
|
||||
/** @var Node\Name Namespaced name (if using NameResolver) */
|
||||
/** @var Node\Name|null Namespaced name (if using NameResolver) */
|
||||
public $namespacedName;
|
||||
|
||||
/**
|
||||
|
|
|
@ -2147,8 +2147,7 @@ class Php5 extends \PhpParser\ParserAbstract
|
|||
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||
},
|
||||
392 => function ($stackPos) {
|
||||
$attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
|
||||
$this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||
$this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos-(4-1)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||
},
|
||||
393 => function ($stackPos) {
|
||||
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||
|
@ -2275,11 +2274,10 @@ class Php5 extends \PhpParser\ParserAbstract
|
|||
$this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
|
||||
},
|
||||
434 => function ($stackPos) {
|
||||
$this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
||||
$this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
||||
},
|
||||
435 => function ($stackPos) {
|
||||
$attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
|
||||
$this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
|
||||
$this->semValue = Scalar\String_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, false);
|
||||
},
|
||||
436 => function ($stackPos) {
|
||||
$this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -875,6 +875,15 @@ abstract class ParserAbstract implements Parser
|
|||
return $attributes;
|
||||
}
|
||||
|
||||
protected function checkClassModifier($a, $b, $modifierPos) {
|
||||
try {
|
||||
Class_::verifyClassModifier($a, $b);
|
||||
} catch (Error $error) {
|
||||
$error->setAttributes($this->getAttributesAt($modifierPos));
|
||||
$this->emitError($error);
|
||||
}
|
||||
}
|
||||
|
||||
protected function checkModifier($a, $b, $modifierPos) {
|
||||
// Jumping through some hoops here because verifyModifier() is also used elsewhere
|
||||
try {
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
.idea/
|
||||
vendor/
|
|
@ -1,24 +0,0 @@
|
|||
language: php
|
||||
sudo: false
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
include:
|
||||
- php: "7.1"
|
||||
- php: "7.2"
|
||||
- php: "7.3"
|
||||
- php: "7.4"
|
||||
- php: "8.0"
|
||||
- php: "nightly"
|
||||
allow_failures:
|
||||
- php: "nightly"
|
||||
- php: "7.4"
|
||||
- php: "8.0"
|
||||
|
||||
install:
|
||||
- composer self-update
|
||||
- composer update
|
||||
|
||||
script:
|
||||
- vendor/bin/phpunit
|
||||
- vendor/bin/psalm
|
|
@ -1,6 +1,6 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 - 2020 Paragon Initiative Enterprises
|
||||
Copyright (c) 2016 - 2022 Paragon Initiative Enterprises
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Constant-Time Encoding
|
||||
|
||||
[![Build Status](https://travis-ci.org/paragonie/constant_time_encoding.svg?branch=master)](https://travis-ci.org/paragonie/constant_time_encoding)
|
||||
[![Build Status](https://github.com/paragonie/constant_time_encoding/actions/workflows/ci.yml/badge.svg)](https://github.com/paragonie/constant_time_encoding/actions)
|
||||
[![Latest Stable Version](https://poser.pugx.org/paragonie/constant_time_encoding/v/stable)](https://packagist.org/packages/paragonie/constant_time_encoding)
|
||||
[![Latest Unstable Version](https://poser.pugx.org/paragonie/constant_time_encoding/v/unstable)](https://packagist.org/packages/paragonie/constant_time_encoding)
|
||||
[![License](https://poser.pugx.org/paragonie/constant_time_encoding/license)](https://packagist.org/packages/paragonie/constant_time_encoding)
|
||||
|
@ -36,7 +36,7 @@ composer require paragonie/constant_time_encoding
|
|||
## How to Use
|
||||
|
||||
```php
|
||||
use \ParagonIE\ConstantTime\Encoding;
|
||||
use ParagonIE\ConstantTime\Encoding;
|
||||
|
||||
// possibly (if applicable):
|
||||
// require 'vendor/autoload.php';
|
||||
|
@ -63,8 +63,8 @@ If you only need a particular variant, you can just reference the
|
|||
required class like so:
|
||||
|
||||
```php
|
||||
use \ParagonIE\ConstantTime\Base64;
|
||||
use \ParagonIE\ConstantTime\Base32;
|
||||
use ParagonIE\ConstantTime\Base64;
|
||||
use ParagonIE\ConstantTime\Base32;
|
||||
|
||||
$data = random_bytes(32);
|
||||
echo Base64::encode($data), "\n";
|
||||
|
|
|
@ -47,5 +47,10 @@
|
|||
"psr-4": {
|
||||
"ParagonIE\\ConstantTime\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"ParagonIE\\ConstantTime\\Tests\\": "tests/"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="true" backupStaticAttributes="false" bootstrap="vendor/autoload.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnError="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<directory suffix=".php">./src</directory>
|
||||
</include>
|
||||
</coverage>
|
||||
<testsuites>
|
||||
<testsuite name="Constant Time Encoding Test Suite">
|
||||
<directory suffix="Test.php">./tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<psalm
|
||||
useDocblockTypes="true"
|
||||
totallyTyped="true"
|
||||
>
|
||||
<projectFiles>
|
||||
<directory name="src" />
|
||||
</projectFiles>
|
||||
</psalm>
|
|
@ -2,8 +2,12 @@
|
|||
declare(strict_types=1);
|
||||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use RangeException;
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -60,20 +64,20 @@ abstract class Base32 implements EncoderInterface
|
|||
/**
|
||||
* Encode into Base32 (RFC 4648)
|
||||
*
|
||||
* @param string $src
|
||||
* @param string $binString
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encode(string $src): string
|
||||
public static function encode(string $binString): string
|
||||
{
|
||||
return static::doEncode($src, false, true);
|
||||
return static::doEncode($binString, false, true);
|
||||
}
|
||||
/**
|
||||
* Encode into Base32 (RFC 4648)
|
||||
*
|
||||
* @param string $src
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encodeUnpadded(string $src): string
|
||||
{
|
||||
|
@ -85,7 +89,7 @@ abstract class Base32 implements EncoderInterface
|
|||
*
|
||||
* @param string $src
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encodeUpper(string $src): string
|
||||
{
|
||||
|
@ -97,7 +101,7 @@ abstract class Base32 implements EncoderInterface
|
|||
*
|
||||
* @param string $src
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encodeUpperUnpadded(string $src): string
|
||||
{
|
||||
|
@ -182,6 +186,32 @@ abstract class Base32 implements EncoderInterface
|
|||
return \pack('C', $src + $diff);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $encodedString
|
||||
* @param bool $upper
|
||||
* @return string
|
||||
*/
|
||||
public static function decodeNoPadding(string $encodedString, bool $upper = false): string
|
||||
{
|
||||
$srcLen = Binary::safeStrlen($encodedString);
|
||||
if ($srcLen === 0) {
|
||||
return '';
|
||||
}
|
||||
if (($srcLen & 7) === 0) {
|
||||
for ($j = 0; $j < 7 && $j < $srcLen; ++$j) {
|
||||
if ($encodedString[$srcLen - $j - 1] === '=') {
|
||||
throw new InvalidArgumentException(
|
||||
"decodeNoPadding() doesn't tolerate padding"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return static::doDecode(
|
||||
$encodedString,
|
||||
$upper,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Base32 decoding
|
||||
|
@ -190,11 +220,15 @@ abstract class Base32 implements EncoderInterface
|
|||
* @param bool $upper
|
||||
* @param bool $strictPadding
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
* @psalm-suppress RedundantCondition
|
||||
*/
|
||||
protected static function doDecode(string $src, bool $upper = false, bool $strictPadding = false): string
|
||||
{
|
||||
protected static function doDecode(
|
||||
string $src,
|
||||
bool $upper = false,
|
||||
bool $strictPadding = false
|
||||
): string {
|
||||
// We do this to reduce code duplication:
|
||||
$method = $upper
|
||||
? 'decode5BitsUpper'
|
||||
|
@ -216,7 +250,7 @@ abstract class Base32 implements EncoderInterface
|
|||
}
|
||||
}
|
||||
if (($srcLen & 7) === 1) {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Incorrect padding'
|
||||
);
|
||||
}
|
||||
|
@ -287,6 +321,9 @@ abstract class Base32 implements EncoderInterface
|
|||
(($c4 << 7) | ($c5 << 2) | ($c6 >> 3)) & 0xff
|
||||
);
|
||||
$err |= ($c0 | $c1 | $c2 | $c3 | $c4 | $c5 | $c6) >> 8;
|
||||
if ($strictPadding) {
|
||||
$err |= ($c6 << 5) & 0xff;
|
||||
}
|
||||
} elseif ($i + 5 < $srcLen) {
|
||||
/** @var int $c1 */
|
||||
$c1 = static::$method($chunk[2]);
|
||||
|
@ -324,6 +361,9 @@ abstract class Base32 implements EncoderInterface
|
|||
(($c3 << 4) | ($c4 >> 1) ) & 0xff
|
||||
);
|
||||
$err |= ($c0 | $c1 | $c2 | $c3 | $c4) >> 8;
|
||||
if ($strictPadding) {
|
||||
$err |= ($c4 << 7) & 0xff;
|
||||
}
|
||||
} elseif ($i + 3 < $srcLen) {
|
||||
/** @var int $c1 */
|
||||
$c1 = static::$method($chunk[2]);
|
||||
|
@ -338,6 +378,9 @@ abstract class Base32 implements EncoderInterface
|
|||
(($c1 << 6) | ($c2 << 1) | ($c3 >> 4)) & 0xff
|
||||
);
|
||||
$err |= ($c0 | $c1 | $c2 | $c3) >> 8;
|
||||
if ($strictPadding) {
|
||||
$err |= ($c3 << 4) & 0xff;
|
||||
}
|
||||
} elseif ($i + 2 < $srcLen) {
|
||||
/** @var int $c1 */
|
||||
$c1 = static::$method($chunk[2]);
|
||||
|
@ -350,6 +393,9 @@ abstract class Base32 implements EncoderInterface
|
|||
(($c1 << 6) | ($c2 << 1) ) & 0xff
|
||||
);
|
||||
$err |= ($c0 | $c1 | $c2) >> 8;
|
||||
if ($strictPadding) {
|
||||
$err |= ($c2 << 6) & 0xff;
|
||||
}
|
||||
} elseif ($i + 1 < $srcLen) {
|
||||
/** @var int $c1 */
|
||||
$c1 = static::$method($chunk[2]);
|
||||
|
@ -359,6 +405,9 @@ abstract class Base32 implements EncoderInterface
|
|||
(($c0 << 3) | ($c1 >> 2) ) & 0xff
|
||||
);
|
||||
$err |= ($c0 | $c1) >> 8;
|
||||
if ($strictPadding) {
|
||||
$err |= ($c1 << 6) & 0xff;
|
||||
}
|
||||
} else {
|
||||
$dest .= \pack(
|
||||
'C',
|
||||
|
@ -367,10 +416,9 @@ abstract class Base32 implements EncoderInterface
|
|||
$err |= ($c0) >> 8;
|
||||
}
|
||||
}
|
||||
/** @var bool $check */
|
||||
$check = ($err === 0);
|
||||
if (!$check) {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Base32::doDecode() only expects characters in the correct base32 alphabet'
|
||||
);
|
||||
}
|
||||
|
@ -384,7 +432,7 @@ abstract class Base32 implements EncoderInterface
|
|||
* @param bool $upper
|
||||
* @param bool $pad
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
protected static function doEncode(string $src, bool $upper = false, $pad = true): string
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@ declare(strict_types=1);
|
|||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
|
|
@ -2,8 +2,12 @@
|
|||
declare(strict_types=1);
|
||||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use RangeException;
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -38,13 +42,14 @@ abstract class Base64 implements EncoderInterface
|
|||
*
|
||||
* Base64 character set "[A-Z][a-z][0-9]+/"
|
||||
*
|
||||
* @param string $src
|
||||
* @param string $binString
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encode(string $src): string
|
||||
public static function encode(string $binString): string
|
||||
{
|
||||
return static::doEncode($src, true);
|
||||
return static::doEncode($binString, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -54,7 +59,8 @@ abstract class Base64 implements EncoderInterface
|
|||
*
|
||||
* @param string $src
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encodeUnpadded(string $src): string
|
||||
{
|
||||
|
@ -65,7 +71,8 @@ abstract class Base64 implements EncoderInterface
|
|||
* @param string $src
|
||||
* @param bool $pad Include = padding?
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
protected static function doEncode(string $src, bool $pad = true): string
|
||||
{
|
||||
|
@ -119,8 +126,9 @@ abstract class Base64 implements EncoderInterface
|
|||
* @param string $encodedString
|
||||
* @param bool $strictPadding
|
||||
* @return string
|
||||
* @throws \RangeException
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws RangeException
|
||||
* @throws TypeError
|
||||
* @psalm-suppress RedundantCondition
|
||||
*/
|
||||
public static function decode(string $encodedString, bool $strictPadding = false): string
|
||||
|
@ -141,12 +149,12 @@ abstract class Base64 implements EncoderInterface
|
|||
}
|
||||
}
|
||||
if (($srcLen & 3) === 1) {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Incorrect padding'
|
||||
);
|
||||
}
|
||||
if ($encodedString[$srcLen - 1] === '=') {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Incorrect padding'
|
||||
);
|
||||
}
|
||||
|
@ -189,6 +197,9 @@ abstract class Base64 implements EncoderInterface
|
|||
((($c1 << 4) | ($c2 >> 2)) & 0xff)
|
||||
);
|
||||
$err |= ($c0 | $c1 | $c2) >> 8;
|
||||
if ($strictPadding) {
|
||||
$err |= ($c2 << 6) & 0xff;
|
||||
}
|
||||
} elseif ($i + 1 < $srcLen) {
|
||||
$c1 = static::decode6Bits($chunk[2]);
|
||||
$dest .= \pack(
|
||||
|
@ -196,20 +207,52 @@ abstract class Base64 implements EncoderInterface
|
|||
((($c0 << 2) | ($c1 >> 4)) & 0xff)
|
||||
);
|
||||
$err |= ($c0 | $c1) >> 8;
|
||||
} elseif ($i < $srcLen && $strictPadding) {
|
||||
if ($strictPadding) {
|
||||
$err |= ($c1 << 4) & 0xff;
|
||||
}
|
||||
} elseif ($strictPadding) {
|
||||
$err |= 1;
|
||||
}
|
||||
}
|
||||
/** @var bool $check */
|
||||
$check = ($err === 0);
|
||||
if (!$check) {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Base64::decode() only expects characters in the correct base64 alphabet'
|
||||
);
|
||||
}
|
||||
return $dest;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $encodedString
|
||||
* @return string
|
||||
*/
|
||||
public static function decodeNoPadding(string $encodedString): string
|
||||
{
|
||||
$srcLen = Binary::safeStrlen($encodedString);
|
||||
if ($srcLen === 0) {
|
||||
return '';
|
||||
}
|
||||
if (($srcLen & 3) === 0) {
|
||||
if ($encodedString[$srcLen - 1] === '=') {
|
||||
throw new InvalidArgumentException(
|
||||
"decodeNoPadding() doesn't tolerate padding"
|
||||
);
|
||||
}
|
||||
if (($srcLen & 3) > 1) {
|
||||
if ($encodedString[$srcLen - 2] === '=') {
|
||||
throw new InvalidArgumentException(
|
||||
"decodeNoPadding() doesn't tolerate padding"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return static::decode(
|
||||
$encodedString,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses bitwise operators instead of table-lookups to turn 6-bit integers
|
||||
* into 8-bit integers.
|
||||
|
|
|
@ -3,7 +3,7 @@ declare(strict_types=1);
|
|||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
|
|
@ -3,7 +3,7 @@ declare(strict_types=1);
|
|||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
|
|
@ -3,7 +3,7 @@ declare(strict_types=1);
|
|||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
declare(strict_types=1);
|
||||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -46,6 +48,8 @@ abstract class Binary
|
|||
public static function safeStrlen(string $str): int
|
||||
{
|
||||
if (\function_exists('mb_strlen')) {
|
||||
// mb_strlen in PHP 7.x can return false.
|
||||
/** @psalm-suppress RedundantCast */
|
||||
return (int) \mb_strlen($str, '8bit');
|
||||
} else {
|
||||
return \strlen($str);
|
||||
|
@ -60,9 +64,10 @@ abstract class Binary
|
|||
* @staticvar boolean $exists
|
||||
* @param string $str
|
||||
* @param int $start
|
||||
* @param int $length
|
||||
* @param ?int $length
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function safeSubstr(
|
||||
string $str,
|
||||
|
|
|
@ -3,7 +3,7 @@ declare(strict_types=1);
|
|||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
declare(strict_types=1);
|
||||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -36,7 +38,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32Encode(string $str): string
|
||||
{
|
||||
|
@ -48,7 +50,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32EncodeUpper(string $str): string
|
||||
{
|
||||
|
@ -60,7 +62,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32Decode(string $str): string
|
||||
{
|
||||
|
@ -72,7 +74,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32DecodeUpper(string $str): string
|
||||
{
|
||||
|
@ -84,7 +86,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32HexEncode(string $str): string
|
||||
{
|
||||
|
@ -96,7 +98,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32HexEncodeUpper(string $str): string
|
||||
{
|
||||
|
@ -108,7 +110,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32HexDecode(string $str): string
|
||||
{
|
||||
|
@ -120,7 +122,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32HexDecodeUpper(string $str): string
|
||||
{
|
||||
|
@ -132,7 +134,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64Encode(string $str): string
|
||||
{
|
||||
|
@ -144,7 +146,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64Decode(string $str): string
|
||||
{
|
||||
|
@ -157,7 +159,7 @@ abstract class Encoding
|
|||
* Base64 character set "./[A-Z][a-z][0-9]"
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64EncodeDotSlash(string $str): string
|
||||
{
|
||||
|
@ -172,7 +174,7 @@ abstract class Encoding
|
|||
* @param string $str
|
||||
* @return string
|
||||
* @throws \RangeException
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64DecodeDotSlash(string $str): string
|
||||
{
|
||||
|
@ -185,7 +187,7 @@ abstract class Encoding
|
|||
* Base64 character set "[.-9][A-Z][a-z]" or "./[0-9][A-Z][a-z]"
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64EncodeDotSlashOrdered(string $str): string
|
||||
{
|
||||
|
@ -200,7 +202,7 @@ abstract class Encoding
|
|||
* @param string $str
|
||||
* @return string
|
||||
* @throws \RangeException
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64DecodeDotSlashOrdered(string $str): string
|
||||
{
|
||||
|
@ -213,7 +215,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $bin_string (raw binary)
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function hexEncode(string $bin_string): string
|
||||
{
|
||||
|
@ -239,7 +241,7 @@ abstract class Encoding
|
|||
*
|
||||
* @param string $bin_string (raw binary)
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function hexEncodeUpper(string $bin_string): string
|
||||
{
|
||||
|
|
|
@ -2,8 +2,11 @@
|
|||
declare(strict_types=1);
|
||||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
use RangeException;
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -37,22 +40,19 @@ abstract class Hex implements EncoderInterface
|
|||
*
|
||||
* @param string $binString (raw binary)
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encode(string $binString): string
|
||||
{
|
||||
/** @var string $hex */
|
||||
$hex = '';
|
||||
$len = Binary::safeStrlen($binString);
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
/** @var array<int, int> $chunk */
|
||||
$chunk = \unpack('C', Binary::safeSubstr($binString, $i, 1));
|
||||
/** @var int $c */
|
||||
$chunk = \unpack('C', $binString[$i]);
|
||||
$c = $chunk[1] & 0xf;
|
||||
/** @var int $b */
|
||||
$b = $chunk[1] >> 4;
|
||||
|
||||
$hex .= pack(
|
||||
$hex .= \pack(
|
||||
'CC',
|
||||
(87 + $b + ((($b - 10) >> 8) & ~38)),
|
||||
(87 + $c + ((($c - 10) >> 8) & ~38))
|
||||
|
@ -67,24 +67,20 @@ abstract class Hex implements EncoderInterface
|
|||
*
|
||||
* @param string $binString (raw binary)
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function encodeUpper(string $binString): string
|
||||
{
|
||||
/** @var string $hex */
|
||||
$hex = '';
|
||||
/** @var int $len */
|
||||
$len = Binary::safeStrlen($binString);
|
||||
|
||||
for ($i = 0; $i < $len; ++$i) {
|
||||
/** @var array<int, int> $chunk */
|
||||
$chunk = \unpack('C', Binary::safeSubstr($binString, $i, 2));
|
||||
/** @var int $c */
|
||||
$chunk = \unpack('C', $binString[$i]);
|
||||
$c = $chunk[1] & 0xf;
|
||||
/** @var int $b */
|
||||
$b = $chunk[1] >> 4;
|
||||
|
||||
$hex .= pack(
|
||||
$hex .= \pack(
|
||||
'CC',
|
||||
(55 + $b + ((($b - 10) >> 8) & ~6)),
|
||||
(55 + $c + ((($c - 10) >> 8) & ~6))
|
||||
|
@ -100,23 +96,20 @@ abstract class Hex implements EncoderInterface
|
|||
* @param string $encodedString
|
||||
* @param bool $strictPadding
|
||||
* @return string (raw binary)
|
||||
* @throws \RangeException
|
||||
* @throws RangeException
|
||||
*/
|
||||
public static function decode(string $encodedString, bool $strictPadding = false): string
|
||||
{
|
||||
/** @var int $hex_pos */
|
||||
public static function decode(
|
||||
string $encodedString,
|
||||
bool $strictPadding = false
|
||||
): string {
|
||||
$hex_pos = 0;
|
||||
/** @var string $bin */
|
||||
$bin = '';
|
||||
/** @var int $c_acc */
|
||||
$c_acc = 0;
|
||||
/** @var int $hex_len */
|
||||
$hex_len = Binary::safeStrlen($encodedString);
|
||||
/** @var int $state */
|
||||
$state = 0;
|
||||
if (($hex_len & 1) !== 0) {
|
||||
if ($strictPadding) {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Expected an even number of hexadecimal characters'
|
||||
);
|
||||
} else {
|
||||
|
@ -129,23 +122,17 @@ abstract class Hex implements EncoderInterface
|
|||
$chunk = \unpack('C*', $encodedString);
|
||||
while ($hex_pos < $hex_len) {
|
||||
++$hex_pos;
|
||||
/** @var int $c */
|
||||
$c = $chunk[$hex_pos];
|
||||
/** @var int $c_num */
|
||||
$c_num = $c ^ 48;
|
||||
/** @var int $c_num0 */
|
||||
$c_num0 = ($c_num - 10) >> 8;
|
||||
/** @var int $c_alpha */
|
||||
$c_alpha = ($c & ~32) - 55;
|
||||
/** @var int $c_alpha0 */
|
||||
$c_alpha0 = (($c_alpha - 10) ^ ($c_alpha - 16)) >> 8;
|
||||
|
||||
if (($c_num0 | $c_alpha0) === 0) {
|
||||
throw new \RangeException(
|
||||
throw new RangeException(
|
||||
'Expected hexadecimal character'
|
||||
);
|
||||
}
|
||||
/** @var int $c_val */
|
||||
$c_val = ($c_num0 & $c_num) | ($c_alpha & $c_alpha0);
|
||||
if ($state === 0) {
|
||||
$c_acc = $c_val * 16;
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
declare(strict_types=1);
|
||||
namespace ParagonIE\ConstantTime;
|
||||
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.
|
||||
* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -41,7 +43,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64Encode(string $str): string
|
||||
{
|
||||
|
@ -55,7 +58,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64Decode(string $str): string
|
||||
{
|
||||
|
@ -69,7 +73,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64UrlSafeEncode(string $str): string
|
||||
{
|
||||
|
@ -83,7 +88,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base64UrlSafeDecode(string $str): string
|
||||
{
|
||||
|
@ -97,7 +103,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32Encode(string $str): string
|
||||
{
|
||||
|
@ -111,7 +118,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32Decode(string $str): string
|
||||
{
|
||||
|
@ -125,7 +133,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32HexEncode(string $str): string
|
||||
{
|
||||
|
@ -139,7 +148,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base32HexDecode(string $str): string
|
||||
{
|
||||
|
@ -153,7 +163,8 @@ abstract class RFC4648
|
|||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
* @throws \TypeError
|
||||
*
|
||||
* @throws TypeError
|
||||
*/
|
||||
public static function base16Encode(string $str): string
|
||||
{
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base32Hex;
|
||||
|
||||
class Base32HexTest extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Base32Hex::encode()
|
||||
* @covers Base32Hex::decode()
|
||||
* @covers Base32Hex::encodeUpper()
|
||||
* @covers Base32Hex::decodeUpper()
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Base32Hex::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32Hex::decode($enc)
|
||||
);
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$unpadded,
|
||||
Base32Hex::encodeUnpadded($random)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32Hex::decode($unpadded)
|
||||
);
|
||||
|
||||
$enc = Base32Hex::encodeUpper($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32Hex::decodeUpper($enc)
|
||||
); $unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$unpadded,
|
||||
Base32Hex::encodeUpperUnpadded($random)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32Hex::decodeUpper($unpadded)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base32;
|
||||
|
||||
class Base32Test extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Base32::encode()
|
||||
* @covers Base32::decode()
|
||||
* @covers Base32::encodeUpper()
|
||||
* @covers Base32::decodeUpper()
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Base32::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32::decode($enc)
|
||||
);
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$unpadded,
|
||||
Base32::encodeUnpadded($random)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32::decode($unpadded)
|
||||
);
|
||||
|
||||
$enc = Base32::encodeUpper($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32::decodeUpper($enc)
|
||||
);
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$unpadded,
|
||||
Base32::encodeUpperUnpadded($random)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base32::decodeUpper($unpadded)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base64DotSlashOrdered;
|
||||
|
||||
class Base64DotSlashOrderedTest extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Base64DotSlashOrdered::encode()
|
||||
* @covers Base64DotSlashOrdered::decode()
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Base64DotSlashOrdered::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64DotSlashOrdered::decode($enc)
|
||||
);
|
||||
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64DotSlashOrdered::decode($unpadded)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64DotSlashOrdered::decode($unpadded)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base64DotSlash;
|
||||
|
||||
class Base64DotSlashTest extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Base64DotSlash::encode()
|
||||
* @covers Base64DotSlash::decode()
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Base64DotSlash::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64DotSlash::decode($enc)
|
||||
);
|
||||
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64DotSlash::decode($unpadded)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64DotSlash::decode($unpadded)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base64;
|
||||
|
||||
class Base64Test extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Base64::encode()
|
||||
* @covers Base64::decode()
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Base64::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64::decode($enc)
|
||||
);
|
||||
$this->assertSame(
|
||||
\base64_encode($random),
|
||||
$enc
|
||||
);
|
||||
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64::decode($unpadded)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64::decode($unpadded)
|
||||
);
|
||||
}
|
||||
}
|
||||
$str = 'MIIFzzCCBLegAwIBAgIDAfdlMA0GCSqGSIb3DQEBBQUAMHMxCzAJBgNVBAYTAlBM' .
|
||||
'MSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMSQwIgYDVQQ' .
|
||||
'DDBtDT1BFIFNaQUZJUiAtIEt3YWxpZmlrb3dhbnkxFDASBgNVBAUTC05yIHdwaXN1Oi' .
|
||||
'A2MB4XDTExMTEwOTA2MDAwMFoXDTEzMTEwOTA2MDAwMFowgdkxCzAJBgNVBAYTAlBMM' .
|
||||
'RwwGgYDVQQKDBNVcnrEhWQgTWlhc3RhIEdkeW5pMRswGQYDVQQFExJQRVNFTDogNjEw' .
|
||||
'NjA2MDMxMTgxGTAXBgNVBAMMEEplcnp5IFByemV3b3Jza2kxTzBNBgNVBBAwRgwiQWw' .
|
||||
'uIE1hcnN6YcWCa2EgUGnFgnN1ZHNraWVnbyA1Mi81NAwNODEtMzgyIEdkeW5pYQwGUG' .
|
||||
'9sc2thDAlwb21vcnNraWUxDjAMBgNVBCoMBUplcnp5MRMwEQYDVQQEDApQcnpld29yc' .
|
||||
'2tpMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMm5vjGqHPthJCMqKpqssSISRo' .
|
||||
's0PYDTcEQzyyurfX67EJWKtZj6HNwuDMEGJ02iBNZfjUl7r8dIi28bSKhNlsfycXZKY' .
|
||||
'RcIjp0+r5RqtR2auo9GQ6veKb61DEAGIqaR+uLLcJVTHCu0w9oXLGbRlGth5eNoj03C' .
|
||||
'xXVAH2IfhbNwIDAQABo4IChzCCAoMwDAYDVR0TAQH/BAIwADCCAUgGA1UdIAEB/wSCA' .
|
||||
'TwwggE4MIIBNAYJKoRoAYb3IwEBMIIBJTCB3QYIKwYBBQUHAgIwgdAMgc1EZWtsYXJh' .
|
||||
'Y2phIHRhIGplc3Qgb8Wbd2lhZGN6ZW5pZW0gd3lkYXdjeSwgxbxlIHRlbiBjZXJ0eWZ' .
|
||||
'pa2F0IHpvc3RhxYIgd3lkYW55IGpha28gY2VydHlmaWthdCBrd2FsaWZpa293YW55IH' .
|
||||
'pnb2RuaWUgeiB3eW1hZ2FuaWFtaSB1c3Rhd3kgbyBwb2RwaXNpZSBlbGVrdHJvbmlje' .
|
||||
'm55bSBvcmF6IHRvd2FyenlzesSFY3ltaSBqZWogcm96cG9yesSFZHplbmlhbWkuMEMG' .
|
||||
'CCsGAQUFBwIBFjdodHRwOi8vd3d3Lmtpci5jb20ucGwvY2VydHlmaWthY2phX2tsdWN' .
|
||||
'6eS9wb2xpdHlrYS5odG1sMAkGA1UdCQQCMAAwIQYDVR0RBBowGIEWai5wcnpld29yc2' .
|
||||
'tpQGdkeW5pYS5wbDAOBgNVHQ8BAf8EBAMCBkAwgZ4GA1UdIwSBljCBk4AU3TGldJXip' .
|
||||
'N4oGS3ZYmnBDMFs8gKhd6R1MHMxCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dh' .
|
||||
'IEl6YmEgUm96bGljemVuaW93YSBTLkEuMSQwIgYDVQQDDBtDT1BFIFNaQUZJUiAtIEt' .
|
||||
'3YWxpZmlrb3dhbnkxFDASBgNVBAUTC05yIHdwaXN1OiA2ggJb9jBIBgNVHR8EQTA/MD' .
|
||||
'2gO6A5hjdodHRwOi8vd3d3Lmtpci5jb20ucGwvY2VydHlmaWthY2phX2tsdWN6eS9DU' .
|
||||
'kxfT1pLMzIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQBYPIqnAreyeql7/opJjcar/qWZ' .
|
||||
'y9ruhB2q0lZFsJOhwgMnbQXzp/4vv93YJqcHGAXdHP6EO8FQX47mjo2ZKQmi+cIHJHL' .
|
||||
'ONdX/3Im+M17V0iNAh7Z1lOSfTRT+iiwe/F8phcEaD5q2RmvYusR7zXZq/cLL0If0hX' .
|
||||
'oPZ/EHQxjN8pxzxiUx6bJAgturnIMEfRNesxwghdr1dkUjOhGLf3kHVzgM6j3VAM7oF' .
|
||||
'mMUb5y5s96Bzl10DodWitjOEH0vvnIcsppSxH1C1dCAi0o9f/1y2XuLNhBNHMAyTqpY' .
|
||||
'PX8Yvav1c+Z50OMaSXHAnTa20zv8UtiHbaAhwlifCelUMj93S';
|
||||
|
||||
try {
|
||||
Base64::decode($str, true);
|
||||
$this->fail('Strict padding not enforced');
|
||||
} catch (\Exception $ex) {
|
||||
|
||||
$this->assertSame(
|
||||
Base64::decode($str),
|
||||
\base64_decode($str)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
|
||||
use ParagonIE\ConstantTime\Base64UrlSafe;
|
||||
use ParagonIE\ConstantTime\Binary;
|
||||
|
||||
/**
|
||||
* Class Base64UrlSafeTest
|
||||
*/
|
||||
class Base64UrlSafeTest extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Base64UrlSafe::encode()
|
||||
* @covers Base64UrlSafe::decode()
|
||||
*
|
||||
* @throws Exception
|
||||
* @throws TypeError
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Base64UrlSafe::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64UrlSafe::decode($enc)
|
||||
);
|
||||
$this->assertSame(
|
||||
\strtr(\base64_encode($random), '+/', '-_'),
|
||||
$enc
|
||||
);
|
||||
|
||||
$unpadded = \rtrim($enc, '=');
|
||||
$this->assertSame(
|
||||
$unpadded,
|
||||
Base64UrlSafe::encodeUnpadded($random)
|
||||
);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64UrlSafe::decode($unpadded)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$random = \random_bytes(1 << 20);
|
||||
$enc = Base64UrlSafe::encode($random);
|
||||
$this->assertTrue(Binary::safeStrlen($enc) > 65536);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Base64UrlSafe::decode($enc)
|
||||
);
|
||||
$this->assertSame(
|
||||
\strtr(\base64_encode($random), '+/', '-_'),
|
||||
$enc
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,307 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base32;
|
||||
use \ParagonIE\ConstantTime\Base32Hex;
|
||||
use \ParagonIE\ConstantTime\Base64;
|
||||
use \ParagonIE\ConstantTime\Base64DotSlash;
|
||||
use \ParagonIE\ConstantTime\Base64DotSlashOrdered;
|
||||
use \ParagonIE\ConstantTime\Base64UrlSafe;
|
||||
use \ParagonIE\ConstantTime\Encoding;
|
||||
use \ParagonIE\ConstantTime\Hex;
|
||||
|
||||
class EncodingTest extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testBase32Encode()
|
||||
{
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\x00"),
|
||||
'aa======'
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\x00\x00"),
|
||||
'aaaa===='
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\x00\x00\x00"),
|
||||
'aaaaa==='
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\x00\x00\x00\x00"),
|
||||
'aaaaaaa='
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\x00\x00\x00\x00\x00"),
|
||||
'aaaaaaaa'
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\x00\x00\x0F\xFF\xFF"),
|
||||
'aaaa7777'
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\xFF\xFF\xF0\x00\x00"),
|
||||
'7777aaaa'
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\xce\x73\x9c\xe7\x39"),
|
||||
'zzzzzzzz'
|
||||
);
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode("\xd6\xb5\xad\x6b\x5a"),
|
||||
'22222222'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\x00"),
|
||||
'AA======'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\x00\x00"),
|
||||
'AAAA===='
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\x00\x00\x00"),
|
||||
'AAAAA==='
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\x00\x00\x00\x00"),
|
||||
'AAAAAAA='
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\x00\x00\x00\x00\x00"),
|
||||
'AAAAAAAA'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\x00\x00\x0F\xFF\xFF"),
|
||||
'AAAA7777'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\xFF\xFF\xF0\x00\x00"),
|
||||
'7777AAAA'
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\xce\x73\x9c\xe7\x39"),
|
||||
'ZZZZZZZZ'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32::encodeUpper("\xd6\xb5\xad\x6b\x5a"),
|
||||
'22222222'
|
||||
);
|
||||
}
|
||||
|
||||
public function testBase32Hex()
|
||||
{
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\x00"),
|
||||
'00======'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\x00\x00"),
|
||||
'0000===='
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\x00\x00\x00"),
|
||||
'00000==='
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\x00\x00\x00\x00"),
|
||||
'0000000='
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\x00\x00\x00\x00\x00"),
|
||||
'00000000'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\x00\x00\x0F\xFF\xFF"),
|
||||
'0000vvvv'
|
||||
);
|
||||
$this->assertSame(
|
||||
Base32Hex::encode("\xFF\xFF\xF0\x00\x00"),
|
||||
'vvvv0000'
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Based on test vectors from RFC 4648
|
||||
*/
|
||||
public function testBase32Decode()
|
||||
{
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaaaaa======')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaaaaaaa====')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaaaaaaaa===')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaaaaaaaaaa=')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaaaaaaaaaaa')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00",
|
||||
Encoding::base32Decode('aa======')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00",
|
||||
Encoding::base32Decode('aaaa====')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaa===')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaa=')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x00\x00\x00",
|
||||
Encoding::base32Decode('aaaaaaaa')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\x00\x00\x0F\xFF\xFF",
|
||||
Encoding::base32Decode('aaaa7777')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\xFF\xFF\xF0\x00\x00",
|
||||
Encoding::base32Decode('7777aaaa')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\xce\x73\x9c\xe7\x39",
|
||||
Encoding::base32Decode('zzzzzzzz')
|
||||
);
|
||||
$this->assertSame(
|
||||
"\xd6\xb5\xad\x6b\x5a",
|
||||
Encoding::base32Decode('22222222')
|
||||
);
|
||||
$this->assertSame(
|
||||
'foobar',
|
||||
Encoding::base32Decode('mzxw6ytboi======')
|
||||
);
|
||||
|
||||
$rand = random_bytes(9);
|
||||
$enc = Encoding::base32Encode($rand);
|
||||
|
||||
$this->assertSame(
|
||||
Encoding::base32Encode($rand),
|
||||
Encoding::base32Encode(Encoding::base32Decode($enc))
|
||||
);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::base32Decode($enc)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Encoding::hexDecode()
|
||||
* @covers Encoding::hexEncode()
|
||||
* @covers Encoding::base32Decode()
|
||||
* @covers Encoding::base32Encode()
|
||||
* @covers Encoding::base64Decode()
|
||||
* @covers Encoding::base64Encode()
|
||||
* @covers Encoding::base64DotSlashDecode()
|
||||
* @covers Encoding::base64DotSlashEncode()
|
||||
* @covers Encoding::base64DotSlashOrderedDecode()
|
||||
* @covers Encoding::base64DotSlashOrderedEncode()
|
||||
*/
|
||||
public function testBasicEncoding()
|
||||
{
|
||||
// Re-run the test at least 3 times for each length
|
||||
for ($j = 0; $j < 3; ++$j) {
|
||||
for ($i = 1; $i < 84; ++$i) {
|
||||
$rand = random_bytes($i);
|
||||
$enc = Encoding::hexEncode($rand);
|
||||
$this->assertSame(
|
||||
\bin2hex($rand),
|
||||
$enc,
|
||||
"Hex Encoding - Length: " . $i
|
||||
);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::hexDecode($enc),
|
||||
"Hex Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
// Uppercase variant:
|
||||
$enc = Hex::encodeUpper($rand);
|
||||
$this->assertSame(
|
||||
\strtoupper(\bin2hex($rand)),
|
||||
$enc,
|
||||
"Hex Encoding - Length: " . $i
|
||||
);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Hex::decode($enc),
|
||||
"HexUpper Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Encoding::base32Encode($rand);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::base32Decode($enc),
|
||||
"Base32 Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Encoding::base32EncodeUpper($rand);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::base32DecodeUpper($enc),
|
||||
"Base32Upper Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Encoding::base32HexEncode($rand);
|
||||
$this->assertSame(
|
||||
bin2hex($rand),
|
||||
bin2hex(Encoding::base32HexDecode($enc)),
|
||||
"Base32Hex Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Encoding::base32HexEncodeUpper($rand);
|
||||
$this->assertSame(
|
||||
bin2hex($rand),
|
||||
bin2hex(Encoding::base32HexDecodeUpper($enc)),
|
||||
"Base32HexUpper Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Encoding::base64Encode($rand);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::base64Decode($enc),
|
||||
"Base64 Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Encoding::base64EncodeDotSlash($rand);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::base64DecodeDotSlash($enc),
|
||||
"Base64 DotSlash Encoding - Length: " . $i
|
||||
);
|
||||
$enc = Encoding::base64EncodeDotSlashOrdered($rand);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Encoding::base64DecodeDotSlashOrdered($enc),
|
||||
"Base64 Ordered DotSlash Encoding - Length: " . $i
|
||||
);
|
||||
|
||||
$enc = Base64UrlSafe::encode($rand);
|
||||
$this->assertSame(
|
||||
\strtr(\base64_encode($rand), '+/', '-_'),
|
||||
$enc
|
||||
);
|
||||
$this->assertSame(
|
||||
$rand,
|
||||
Base64UrlSafe::decode($enc)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Hex;
|
||||
|
||||
class HexTest extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Hex::encode()
|
||||
* @covers Hex::decode()
|
||||
* @covers Hex::encodeUpper()
|
||||
*/
|
||||
public function testRandom()
|
||||
{
|
||||
for ($i = 1; $i < 32; ++$i) {
|
||||
for ($j = 0; $j < 50; ++$j) {
|
||||
$random = \random_bytes($i);
|
||||
|
||||
$enc = Hex::encode($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Hex::decode($enc)
|
||||
);
|
||||
$this->assertSame(
|
||||
\bin2hex($random),
|
||||
$enc
|
||||
);
|
||||
|
||||
$enc = Hex::encodeUpper($random);
|
||||
$this->assertSame(
|
||||
$random,
|
||||
Hex::decode($enc)
|
||||
);
|
||||
$this->assertSame(
|
||||
\strtoupper(\bin2hex($random)),
|
||||
$enc
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
<?php
|
||||
use \ParagonIE\ConstantTime\Base32;
|
||||
use \ParagonIE\ConstantTime\Base32Hex;
|
||||
use \ParagonIE\ConstantTime\Base64;
|
||||
use \ParagonIE\ConstantTime\Base64DotSlash;
|
||||
use \ParagonIE\ConstantTime\Base64DotSlashOrdered;
|
||||
use \ParagonIE\ConstantTime\Encoding;
|
||||
use \ParagonIE\ConstantTime\Hex;
|
||||
|
||||
/**
|
||||
* Class RFC4648Test
|
||||
*
|
||||
* @ref https://tools.ietf.org/html/rfc4648#section-10
|
||||
*/
|
||||
class RFC4648Test extends PHPUnit\Framework\TestCase
|
||||
{
|
||||
public function testVectorBase64()
|
||||
{
|
||||
$this->assertSame(Base64::encode(''), '');
|
||||
$this->assertSame(Base64::encode('f'), 'Zg==');
|
||||
$this->assertSame(Base64::encode('fo'), 'Zm8=');
|
||||
$this->assertSame(Base64::encode('foo'), 'Zm9v');
|
||||
$this->assertSame(Base64::encode('foob'), 'Zm9vYg==');
|
||||
$this->assertSame(Base64::encode('fooba'), 'Zm9vYmE=');
|
||||
$this->assertSame(Base64::encode('foobar'), 'Zm9vYmFy');
|
||||
}
|
||||
|
||||
public function testVectorBase32()
|
||||
{
|
||||
$this->assertSame(Base32::encode(''), '');
|
||||
$this->assertSame(Base32::encode('f'), 'my======');
|
||||
$this->assertSame(Base32::encode('fo'), 'mzxq====');
|
||||
$this->assertSame(Base32::encode('foo'), 'mzxw6===');
|
||||
$this->assertSame(Base32::encode('foob'), 'mzxw6yq=');
|
||||
$this->assertSame(Base32::encode('fooba'), 'mzxw6ytb');
|
||||
$this->assertSame(Base32::encode('foobar'), 'mzxw6ytboi======');
|
||||
|
||||
$this->assertSame(Base32::encodeUpper(''), '');
|
||||
$this->assertSame(Base32::encodeUpper('f'), 'MY======');
|
||||
$this->assertSame(Base32::encodeUpper('fo'), 'MZXQ====');
|
||||
$this->assertSame(Base32::encodeUpper('foo'), 'MZXW6===');
|
||||
$this->assertSame(Base32::encodeUpper('foob'), 'MZXW6YQ=');
|
||||
$this->assertSame(Base32::encodeUpper('fooba'), 'MZXW6YTB');
|
||||
$this->assertSame(Base32::encodeUpper('foobar'), 'MZXW6YTBOI======');
|
||||
}
|
||||
|
||||
public function testVectorBase32Hex()
|
||||
{
|
||||
$this->assertSame(Base32Hex::encode(''), '');
|
||||
$this->assertSame(Base32Hex::encode('f'), 'co======');
|
||||
$this->assertSame(Base32Hex::encode('fo'), 'cpng====');
|
||||
$this->assertSame(Base32Hex::encode('foo'), 'cpnmu===');
|
||||
$this->assertSame(Base32Hex::encode('foob'), 'cpnmuog=');
|
||||
$this->assertSame(Base32Hex::encode('fooba'), 'cpnmuoj1');
|
||||
$this->assertSame(Base32Hex::encode('foobar'), 'cpnmuoj1e8======');
|
||||
|
||||
$this->assertSame(Base32Hex::encodeUpper(''), '');
|
||||
$this->assertSame(Base32Hex::encodeUpper('f'), 'CO======');
|
||||
$this->assertSame(Base32Hex::encodeUpper('fo'), 'CPNG====');
|
||||
$this->assertSame(Base32Hex::encodeUpper('foo'), 'CPNMU===');
|
||||
$this->assertSame(Base32Hex::encodeUpper('foob'), 'CPNMUOG=');
|
||||
$this->assertSame(Base32Hex::encodeUpper('fooba'), 'CPNMUOJ1');
|
||||
$this->assertSame(Base32Hex::encodeUpper('foobar'), 'CPNMUOJ1E8======');
|
||||
}
|
||||
|
||||
public function testVectorBase16()
|
||||
{
|
||||
$this->assertSame(Hex::encode(''), '');
|
||||
$this->assertSame(Hex::encode('f'), '66');
|
||||
$this->assertSame(Hex::encode('fo'), '666f');
|
||||
$this->assertSame(Hex::encode('foo'), '666f6f');
|
||||
$this->assertSame(Hex::encode('foob'), '666f6f62');
|
||||
$this->assertSame(Hex::encode('fooba'), '666f6f6261');
|
||||
$this->assertSame(Hex::encode('foobar'), '666f6f626172');
|
||||
|
||||
$this->assertSame(Hex::encodeUpper(''), '');
|
||||
$this->assertSame(Hex::encodeUpper('f'), '66');
|
||||
$this->assertSame(Hex::encodeUpper('fo'), '666F');
|
||||
$this->assertSame(Hex::encodeUpper('foo'), '666F6F');
|
||||
$this->assertSame(Hex::encodeUpper('foob'), '666F6F62');
|
||||
$this->assertSame(Hex::encodeUpper('fooba'), '666F6F6261');
|
||||
$this->assertSame(Hex::encodeUpper('foobar'), '666F6F626172');
|
||||
}
|
||||
}
|
|
@ -550,7 +550,7 @@ final class TypeResolver
|
|||
);
|
||||
}
|
||||
|
||||
if (!$minValue || !$maxValue || $tokenCounter > 4) {
|
||||
if ($minValue === null || $maxValue === null || $tokenCounter > 4) {
|
||||
throw new RuntimeException(
|
||||
'int<min,max> has not the correct format'
|
||||
);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/phpstan/phpstan/actions"><img src="https://github.com/phpstan/phpstan/workflows/Build/badge.svg" alt="Build Status"></a>
|
||||
<a href="https://github.com/phpstan/phpstan/actions"><img src="https://github.com/phpstan/phpstan/workflows/Tests/badge.svg" alt="Build Status"></a>
|
||||
<a href="https://packagist.org/packages/phpstan/phpstan"><img src="https://poser.pugx.org/phpstan/phpstan/v/stable" alt="Latest Stable Version"></a>
|
||||
<a href="https://packagist.org/packages/phpstan/phpstan/stats"><img src="https://poser.pugx.org/phpstan/phpstan/downloads" alt="Total Downloads"></a>
|
||||
<a href="https://choosealicense.com/licenses/mit/"><img src="https://poser.pugx.org/phpstan/phpstan/license" alt="License"></a>
|
||||
|
@ -26,13 +26,13 @@ can be checked before you run the actual line.
|
|||
|
||||
<a href="https://coders.thecodingmachine.com/phpstan"><img src="https://i.imgur.com/kQhNOTP.png" alt="TheCodingMachine" width="247" height="64"></a>
|
||||
|
||||
<a href="https://packagist.com/?utm_source=phpstan&utm_medium=readme&utm_campaign=sponsorlogo"><img src="https://i.imgur.com/PmMC45f.png" alt="Private Packagist" width="326" height="64"></a>
|
||||
<a href="https://packagist.com/?utm_source=phpstan&utm_medium=readme&utm_campaign=sponsorlogo"><img src="https://i.imgur.com/B2T63Do.png" alt="Private Packagist" width="283" height="64"></a>
|
||||
<br>
|
||||
<a href="https://careers.tuigroup.com/jobs/"><img src="https://i.imgur.com/uw5rAlR.png" alt="Musement" width="247" height="49"></a>
|
||||
|
||||
<a href="https://blackfire.io/docs/introduction?utm_source=phpstan&utm_medium=github_readme&utm_campaign=logo"><img src="https://i.imgur.com/zR8rsqk.png" alt="Blackfire.io" width="254" height="64"></a>
|
||||
<br>
|
||||
<a href="https://www.intracto.com/"><img src="https://i.imgur.com/XRCDGZi.png" alt="Intracto" width="254" height="65"></a>
|
||||
<a href="https://www.iodigital.com/"><img src="https://i.imgur.com/fJlw1n9.png" alt="iO" width="254" height="65"></a>
|
||||
|
||||
<a href="https://jobs.ticketswap.com/"><img src="https://i.imgur.com/lhzcutK.png" alt="TicketSwap" width="269" height="64"></a>
|
||||
<br>
|
||||
|
@ -40,9 +40,9 @@ can be checked before you run the actual line.
|
|||
|
||||
<a href="https://togetter.com/"><img src="https://i.imgur.com/x9n5cj3.png" alt="Togetter" width="283" height="64"></a>
|
||||
<br>
|
||||
<a href="https://join.rightcapital.com/?utm_source=phpstan&utm_medium=github&utm_campaign=sponsorship"><img src="https://i.imgur.com/EuIgI08.png" alt="RightCapital" width="283" height="64"></a>
|
||||
<a href="https://join.rightcapital.com/?utm_source=phpstan&utm_medium=github&utm_campaign=sponsorship"><img src="https://i.imgur.com/1AhB5tW.png" alt="RightCapital" width="283" height="64"></a>
|
||||
|
||||
<a href="https://www.contentkingapp.com/?ref=php-developer&utm_source=phpstan&utm_medium=referral&utm_campaign=sponsorship"><img src="https://i.imgur.com/0blm7ki.png" alt="ContentKing" width="283" height="64"></a>
|
||||
<a href="https://www.contentkingapp.com/?ref=php-developer&utm_source=phpstan&utm_medium=referral&utm_campaign=sponsorship"><img src="https://i.imgur.com/HHhbPGN.png" alt="ContentKing" width="283" height="64"></a>
|
||||
<br>
|
||||
<a href="https://zol.fr?utm_source=phpstan"><img src="https://i.imgur.com/dzDgd4s.png" alt="ZOL" width="283" height="64"></a>
|
||||
|
||||
|
@ -53,6 +53,14 @@ can be checked before you run the actual line.
|
|||
<a href="https://craftcms.com/"><img src="https://i.imgur.com/xJWThke.png" alt="Craft CMS" width="283" height="64"></a>
|
||||
<br>
|
||||
<a href="https://www.worksome.com/"><img src="https://i.imgur.com/TQKSwOl.png" alt="Worksome" width="283" height="64"></a>
|
||||
|
||||
<a href="https://www.campoint.net/"><img src="https://i.imgur.com/fR6eMUm.png" alt="campoint AG" width="283" height="64"></a>
|
||||
<br>
|
||||
<a href="https://www.crisp.nl/"><img src="https://i.imgur.com/jRJyPve.png" alt="Crisp.nl" width="283" height="64"></a>
|
||||
|
||||
<a href="https://inviqa.com/"><img src="https://i.imgur.com/G99rj45.png" alt="Inviqa" width="254" height="65"></a>
|
||||
<br>
|
||||
<a href="https://www.psyonix.com/"><img src="https://i.imgur.com/p8svxQZ.png" alt="Psyonix" width="254" height="65"></a>
|
||||
|
||||
[**You can now sponsor my open-source work on PHPStan through GitHub Sponsors.**](https://github.com/sponsors/ondrejmirtes)
|
||||
|
||||
|
@ -69,6 +77,7 @@ All the documentation lives on the [phpstan.org website](https://phpstan.org/):
|
|||
* [PHPDocs Basics](https://phpstan.org/writing-php-code/phpdocs-basics) & [PHPDoc Types](https://phpstan.org/writing-php-code/phpdoc-types)
|
||||
* [Extension Library](https://phpstan.org/user-guide/extension-library)
|
||||
* [Developing Extensions](https://phpstan.org/developing-extensions/extension-types)
|
||||
* [API Reference](https://apiref.phpstan.org/)
|
||||
|
||||
## PHPStan Pro
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"description": "PHPStan - PHP Static Analysis Tool",
|
||||
"license": ["MIT"],
|
||||
"require": {
|
||||
"php": "^7.1|^8.0"
|
||||
"php": "^7.2|^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan-shim": "*"
|
||||
|
@ -12,11 +12,6 @@
|
|||
"phpstan",
|
||||
"phpstan.phar"
|
||||
],
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": ["bootstrap.php"]
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1,16 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmGKbGQACgkQzxoQjQ56
|
||||
5yAy7BAAgT9+V81RuOMz6F16uqm4gXH1ebioWokEvVb6ZR2fk7p3/m14STmmRkwe
|
||||
MIkxzWKtx/wSC6VafqAtkBPNxpo2j5QU0pmfMAvkPHh79d2lWmUaJmF71I/DCNnh
|
||||
pcZNJLe5x+YTDKU6NnwMlyZEvdaWmyJ2MCf2apBZIJ7axefEJRVVin2pshhXwbtN
|
||||
dHhrT9yFYe/vqOkOLtGDWw+yT1I6he7IpoYZUTyO9b7eadC0ga6Bet7jibNL8JBE
|
||||
cGcB2MFg9bvif0PgIOio0jQXAWjf0ZBXPvoOwTRCqq/UOPTL8SRtiflAFiFOAzk/
|
||||
FRQVC0+26NsGx7R8kS5FZNOHYTIElY1ElyzFk8HWgqrYIvzDNLtkJ68178rDJ29f
|
||||
GyAax4P+gN13biyXQycQHhXDfHN1UytopldiRkitXVFGq92sz6BFgQDLF9yxQOm1
|
||||
iL5oxWSVf6rM8AOc3DV9Aa1kCpG6FrZPJ66NBgJLzTpKARzt7CM+M8VQNA/KnHB3
|
||||
8Mt0WmAeRORSnBWQksOlnA4VUkxWDGkZGVBWMRist7gghfG7n7HxTAUAk1oo7j2b
|
||||
/gTwbeOjv/330uZG31e+hCcaj/EcocHvglegWCPMmIhpXqn25TC+87QkGt2wb6z6
|
||||
dpzTdy3Pimr5BK2YrN1+Le33CYeHKlc+6XL34BEVebAQ/A9OB/M=
|
||||
=k3NZ
|
||||
iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmLNnFgACgkQzxoQjQ56
|
||||
5yBvLA//Y9vKwT9O1c1dWc/vEs2qCRedQLuFYJTJKbwTvqNJwJN5GT1umpsi7KCN
|
||||
MCoDzfutVkITEVZAYmlEUKowi0U+STYSs52guw6VoepC0eTW+b8VLOREo1UpAASb
|
||||
VrCvEsRf6xrfslKqWnbl1RNNhBHpn7+UMloZcawEy7Jpp5G7JIGRhmBGQOVkvymA
|
||||
0+UDw/UiWr+rZFbO5h3JlwFkwRjgzcCVZeNeyrd2oIFKgp8DmN9Kwq6tulGD3V1j
|
||||
oJJh/8liFQrj3DFUz6yIczZcuTtbGcWmIhTQxtlJJczZyGXlK8aXIqac3/YbBIqo
|
||||
4tvCgpLJjGQ8WouVUURGy/AXiUJulnBpDGUAmbdWrwDE3oxx2IPJ+OrmtZVcK2Q1
|
||||
30+jLvdb5NasGTRV84aB7lLKrifde6qFWaXh+s1b/A8znnjHdFMTvYn2F6/xFWdO
|
||||
u0GU5wIcLrWMvmQNA7mRPiV8e7KtOoCggCm923TDJ9Ov56ZL5N+iPCW+7TZWOuM9
|
||||
L2JLhN26WCZzVn/ODuxpIKzz07UGCTcaKzNFYL/V/+Oly7JEub6nNI90SNHRcOt4
|
||||
Iq+EoO8/jW2WZsnBHqP8o88ii9I+DEOYt60csVGVp4sZ3RDgSwXiC5eV0rDvz/0F
|
||||
32oPtYAe5cRIwVriKhGlLM74eozaLmENgtMLePkclpNarFtdwFg=
|
||||
=AySM
|
||||
-----END PGP SIGNATURE-----
|
||||
|
|
|
@ -2,6 +2,12 @@
|
|||
|
||||
All notable changes in `sebastianbergmann/environment` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
|
||||
|
||||
## [5.1.4] - 2022-04-03
|
||||
|
||||
### Fixed
|
||||
|
||||
* [#63](https://github.com/sebastianbergmann/environment/pull/63): `Runtime::getCurrentSettings()` does not correctly process INI settings
|
||||
|
||||
## [5.1.3] - 2020-09-28
|
||||
|
||||
### Changed
|
||||
|
@ -145,6 +151,7 @@ All notable changes in `sebastianbergmann/environment` are documented in this fi
|
|||
|
||||
* This component is no longer supported on PHP 5.6
|
||||
|
||||
[5.1.4]: https://github.com/sebastianbergmann/environment/compare/5.1.3...5.1.4
|
||||
[5.1.3]: https://github.com/sebastianbergmann/environment/compare/5.1.2...5.1.3
|
||||
[5.1.2]: https://github.com/sebastianbergmann/environment/compare/5.1.1...5.1.2
|
||||
[5.1.1]: https://github.com/sebastianbergmann/environment/compare/5.1.0...5.1.1
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
sebastian/environment
|
||||
|
||||
Copyright (c) 2014-2020, Sebastian Bergmann <sebastian@phpunit.de>.
|
||||
Copyright (c) 2014-2022, Sebastian Bergmann <sebastian@phpunit.de>.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# sebastian/environment
|
||||
|
||||
[![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/environment.svg?style=flat-square)](https://packagist.org/packages/sebastian/environment)
|
||||
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.1-8892BF.svg?style=flat-square)](https://php.net/)
|
||||
[![CI Status](https://github.com/sebastianbergmann/environment/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/environment/actions)
|
||||
[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/environment/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/environment)
|
||||
|
||||
|
|
|
@ -60,10 +60,10 @@ final class Console
|
|||
|
||||
if ($this->isWindows()) {
|
||||
// @codeCoverageIgnoreStart
|
||||
return (defined('STDOUT') && function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT))
|
||||
|| false !== getenv('ANSICON')
|
||||
|| 'ON' === getenv('ConEmuANSI')
|
||||
|| 'xterm' === getenv('TERM');
|
||||
return (defined('STDOUT') && function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT)) ||
|
||||
false !== getenv('ANSICON') ||
|
||||
'ON' === getenv('ConEmuANSI') ||
|
||||
'xterm' === getenv('TERM');
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
|
|
|
@ -289,8 +289,12 @@ final class Runtime
|
|||
foreach ($values as $value) {
|
||||
$set = ini_get($value);
|
||||
|
||||
if (isset($config[$value]) && $set != $config[$value]) {
|
||||
$diff[] = sprintf('%s=%s', $value, $set);
|
||||
if (empty($set)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((!isset($config[$value]) || ($set !== $config[$value]))) {
|
||||
$diff[$value] = sprintf('%s=%s', $value, $set);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
# Contributing
|
||||
|
||||
First of all, **thank you** for contributing.
|
||||
|
||||
Bugs or feature requests can be posted online on the GitHub issues section of the project.
|
||||
|
||||
Few rules to ease code reviews and merges:
|
||||
|
||||
- You MUST follow the [PSR-1](http://www.php-fig.org/psr/psr-1/), [PSR-2](http://www.php-fig.org/psr/psr-2/) and [PSR-4](http://www.php-fig.org/psr/psr-4/) coding standards.
|
||||
- You MUST run the test suite.
|
||||
- You MUST write (or update) unit tests when bugs are fixed or features are added.
|
||||
- You SHOULD write documentation.
|
||||
|
||||
We use [Git-Flow](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/) to automate our git branching workflow.
|
||||
|
||||
To contribute use [Pull Requests](https://help.github.com/articles/using-pull-requests), please, write commit messages that make sense, and rebase your branch before submitting your PR.
|
||||
|
||||
May be asked to squash your commits too. This is used to "clean" your Pull Request before merging it, avoiding commits such as fix tests, fix 2, fix 3, etc.
|
||||
|
||||
Run test suite
|
||||
------------
|
||||
|
||||
* install composer: `curl -s http://getcomposer.org/installer | php`
|
||||
* install dependencies: `php composer.phar install`
|
||||
* run tests: `vendor/bin/phpunit`
|
|
@ -1,16 +0,0 @@
|
|||
| Q | A
|
||||
| -------------------- | -----
|
||||
| Bug report? | yes/no
|
||||
| Feature request? | yes/no
|
||||
| BC Break report? | yes/no
|
||||
| RFC? / Specification | yes/no
|
||||
| Library version | x.y(.z)
|
||||
|
||||
<!--
|
||||
Fill in this template according to your issue.
|
||||
Otherwise, replace this comment by the description of your issue.
|
||||
|
||||
Please consider the following requirements
|
||||
* You MUST never send security issues here. If you think that your issue is a security one then contact Spomky in private at https://gitter.im/Spomky/
|
||||
* You should not post many lines of source code or console logs. Small inputs (approx 5 lines) are acceptable otherwize you should use a third party service (e.g. Pastebin, Chop...).
|
||||
-->
|
|
@ -1,21 +0,0 @@
|
|||
| Q | A
|
||||
| ------------- | ---
|
||||
| Branch? | master
|
||||
| Bug fix? | yes/no
|
||||
| New feature? | yes/no
|
||||
| BC breaks? | yes/no
|
||||
| Deprecations? | yes/no
|
||||
| Tests pass? | yes/no
|
||||
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
|
||||
| License | MIT
|
||||
| Tests added | <!--highly recommended for new features-->
|
||||
| Doc PR | <!--highly recommended for new features-->
|
||||
|
||||
<!--
|
||||
Fill in this template according to the PR you're about to submit.
|
||||
Replace this comment by a description of what your PR is solving.
|
||||
|
||||
Please consider the following requirement:
|
||||
* Modification of existing tests should be avoided unless deemed necessary.
|
||||
* You MUST never open a PR related to a security issue. Contact Spomky in private at https://gitter.im/Spomky/
|
||||
-->
|
|
@ -1,17 +0,0 @@
|
|||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: wontfix
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
|
@ -0,0 +1,88 @@
|
|||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 11.0.x | :white_check_mark: |
|
||||
| 10.0.x | :white_check_mark: |
|
||||
| < 10.0 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please send an email to `security@spomky-labs.com`.
|
||||
If deemed necessary, you can encrypt your message using one of the following GPG key
|
||||
|
||||
```
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
xjMEXTsJVxYJKwYBBAHaRw8BAQdAZCS93eHRx97V+LQbAWuAaeKIdUZ9YIkn
|
||||
QH5pQ7dDU0TNMWNvbnRhY3RAc3BvbWt5LWxhYnMuY29tIDxjb250YWN0QHNw
|
||||
b21reS1sYWJzLmNvbT7CdwQQFgoAHwUCXTsJVwYLCQcIAwIEFQgKAgMWAgEC
|
||||
GQECGwMCHgEACgkQG6hbCDSDj+1/tgEAoy11uHvDV7kkG/iN2/0ylV72hU8y
|
||||
c/xoqGd7qFaKD6ABANcthlg63OrQVTf0dUPOT9Y2BJpOOA88JJWgILtuUPIO
|
||||
zjgEXTsJVxIKKwYBBAGXVQEFAQEHQKiX7nldkmICePhzwReZnBPmjpsmNt7V
|
||||
Y8xHdICKsr8cAwEIB8JhBBgWCAAJBQJdOwlXAhsMAAoJEBuoWwg0g4/t0KgA
|
||||
/31ucb/bL/MGpWFrpSjTs6uQhZWlBmcFoeMhwCYepIpZAQDd65UBqFDKXJWv
|
||||
Xy3zoMQQzD9Z6fUATnFrWkzjHwhvDQ==
|
||||
=j4dw
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
xsFNBGILZFoBEADo9pzAMRVxL5typ22Ywifdyi3CMHgg7zptfb8otrQci8IX
|
||||
m7B8/NTA0I9EkenzSW/Mf4k2iPNCwXc+qVEHPvPNvr3WazcdiDQJjXqMtkxG
|
||||
l2dvdQHdBxN46v+mvWDVGf9anYQxIAmZrj7CDLOfD/cG/8STL4hSbFjRBOKs
|
||||
xAP8wgRA/amcrf9WcCDxURGIq8mDPcECR8fca+iukTmMe2NDEc56pJi0KVoF
|
||||
pFhOMMfjgP/XvtGjjSNZNGRgHSLTQs8UiK+5BjPh+iWFIPV5+ZPLpbSOcoma
|
||||
GyeX5i1DmAh7cWx/FphvFzOun6to3ERuy82+zW54iA9zS8+kIfV4Wjr2qE7l
|
||||
Ctc9l8RIv/6dMXoW2Y42CTuywlAMnlP7XaaUgE++CXTIuO7+6Gp0E5NlmqB5
|
||||
lb+CZLV/LS27gUcajs23ve5B3UId2bGUflvTtY/J0VPzrJMoEErVnkCsnD7W
|
||||
Oiwe8GiSNMJmTGu/A45xf5nuYNcuU7blA5XXwPoHZuALj1zv6eCWVxWz02l9
|
||||
Fc/T+gNkOEErlXOcldyXxQ5Qb99TU5NgdqzbibyR9QAqdfwtgg19oFbiSP7t
|
||||
8b5P2qAIW2GaOCkX007cBCzTXNrcQNruTwUD59LZQLhdGz5WJo/gefC/3ZvR
|
||||
vKoJKCRlk7s43aUjeZzE+Engpr5e1wl63WjAzQARAQABzTNzZWN1cml0eUBz
|
||||
cG9ta3ktbGFicy5jb20gPHNlY3VyaXR5QHNwb21reS1sYWJzLmNvbT7CwY0E
|
||||
EAEIACAFAmILZFoGCwkHCAMCBBUICgIEFgIBAAIZAQIbAwIeAQAhCRBy14gx
|
||||
FHv4aBYhBKgF8zJv89FYVv0RFHLXiDEUe/hoA+YP/ijaePtilKURzNVrPWfc
|
||||
gDw/ZNCR+dVAgwGo9VcbOvkyZmyqD6yBjuDWvG96KQs0LRrqWKonAvnewNtp
|
||||
wQruuvrlcCuNE6TTfvx0wh2+lwKD7MH5dKutHUCowVNAsZ5uZxHVF9RGLBh+
|
||||
JRofklupcGqUx+Jtx4uq2gAGOqV4/QdvneMjkLwqVu8FGIM59LfdNfp/iA3p
|
||||
wX2DvfxBO58Gu6hilmf7R+b9nX0U7xYJM6QJb7H89cV3/AoTh2kf1wtFY+Py
|
||||
Di6VZTMUBYOoz2iSnvCE8KlBWDu98/A2EJ7kDGQdmnuIgsURsyap3yKioaUr
|
||||
LGTaG0OiC/gkXkKisH6eff6Gw06qelBarf5N/GgoeAN/amE8twy3a+Hx1pyw
|
||||
ZzkjPsL7uWg3Koy5mPuCtWfPtIBcJaTLS5d8ESlJ8/CfaVaDludzYQZo70Xn
|
||||
m4KzjPnptm3djpZNwoFEUxrHVREOEe69/MnEL2PNcEMQkapg16PnH4phajnC
|
||||
7bYOPDteMJlHjNmQzz9d25ZwzVBHDDT50mHDijR2D/OgKx3NQr88fiFAWhKG
|
||||
lEu1ZuOkKIKV5VIFbocTWSoV7bkzIfrll49xWou+4VOxgRuqjquFC4RV8fea
|
||||
lLbHOcJlOR00aFDmoOWQ3/QNvajaWJFzDdocGbgbnEBMDFRoUkuhqOBcnzA+
|
||||
apW/zsFNBGILZFoBEADSwiM49wObRpxOyas91M6WvJ4Gt3iXqj+L8dmcw0FW
|
||||
UdDpwOxy8tuZx+OfXEBBH3eJHOobC66vN+E9WYobVkJ5zfbGxfQruTuvUZNl
|
||||
X9Lo0UwoP+AP21AKUUvsf48iZGWzmlkxgPnhAQS4ECkkWCKPf7nFTk+V+jIN
|
||||
nf6ZDZLXaRUnG0nLvzs0raG1eTVrGvPSCC8u3R2zIh9SvoeEgTnT/Re0mhCu
|
||||
ah3fwG+4vXc6VIjR1ZtpM9+Y8sl+PFZ/Oiisc+46oU5qXVVLtHfLdxYZ4vl2
|
||||
IflHDKKmrfbfGY1hJl/foBLglT3Cd8GTu3FjiAJX9PpkiWbsflc0OUBQf9aC
|
||||
73W5FLS4P4clm4nNzVGkNucWHvk+urM6nEUf02bhsfF0TPeos3QcJorfKNUS
|
||||
TvuGYccENuK5cVOzEcU+VhN08GT0pr0CpqJnsw+zV8vD4k3aPmMFmSVog+bY
|
||||
NhfB7AgwbOjd6MhQJcP7YjYTHaa6YsnKMSg4RhkDjvMa3421hfaWsVvlIb0f
|
||||
AZJ8BnXgfE0uI8CKA9dc6I2Posl33zC8HI2sS1MEJ90Am68P+uJt61LdJeD5
|
||||
VXSrCkzBhUBds0hbGR6+DF20UD496m7Lw3VBoWOl2bMeLdERDarFMDYsPH47
|
||||
rie9wlrnPNR57HUqK4bpkFwqTStRkRFUhFv7LLWZ1QARAQABwsF2BBgBCAAJ
|
||||
BQJiC2RaAhsMACEJEHLXiDEUe/hoFiEEqAXzMm/z0VhW/REUcteIMRR7+GhI
|
||||
lQ/9GbSwIdGue6Gw0msYAEoER9HhpYB//9/GG7/c4ZW60nLSSYuhNWIo0Akl
|
||||
10CzeApezf/O9/1EExqZ9ygj4wtUphcQOdRJVhXPt+gskw7/NHoXUJ+Z1rbb
|
||||
EWbKle9YufZ4PAKYhlxdqTlWyQvPVxrRvbuhYeQG4S412VzKjH0/x1Fh2CfV
|
||||
hFuyOaRjg89T6rihXL1rCSJ/PDQeQtvtXeJ30yFj+aapCj+VqUl+2D+N0bzS
|
||||
LL18kEPQnJw4BOHOXrw349dAKmHN/QkRH8DINlXLyaOlABglnSViDQL3Q1t3
|
||||
sBuIeClsl3brQNJRp/RKOdTBMNAX+BhAjqodbwwT+UkJl9xJKw0Cla4wtbs2
|
||||
T0yoK/Z1iFfvPdufkK4q6ocAHJUp3+XckFIZxsHQvhQPbm9XoOt1RTO29MOw
|
||||
EYo8UjFQCnXJVsj1/6XMgIUe5tPYvS/ZZZNJFF4j+OE8xRKLKqg/DFcpEipC
|
||||
LCmzzr/hhWx0XP4CIK2tYsAMk3ieCZuk1Wa+NGLL4WfALWsNHq3wg5Wzv+yJ
|
||||
dp14fv711BVYlriI+VKggGFgBdz0dWkgrBk4+thLatJFcjFYr8BLkbtPraa3
|
||||
sFI/cGxvOXSIy4GEALdfnozyU3RJtMNtVi3IzGeIFAOb457y/IrMqpWLp1FX
|
||||
BUqlX5YJHneD9Q8Sfz/HKDQDCqg=
|
||||
=o+4z
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
|
@ -20,7 +20,7 @@
|
|||
"ext-mbstring": "*",
|
||||
"paragonie/constant_time_encoding": "^2.0",
|
||||
"beberlei/assert": "^3.0",
|
||||
"thecodingmachine/safe": "^0.1.14|^1.0"
|
||||
"thecodingmachine/safe": "^0.1.14|^1.0|^2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.0",
|
||||
|
@ -30,7 +30,7 @@
|
|||
"phpstan/phpstan-deprecation-rules": "^0.12",
|
||||
"phpstan/phpstan-phpunit": "^0.12",
|
||||
"phpstan/phpstan-strict-rules": "^0.12",
|
||||
"thecodingmachine/phpstan-safe-rule": "^1.0"
|
||||
"thecodingmachine/phpstan-safe-rule": "^1.0 || ^2.0"
|
||||
},
|
||||
"suggest": {
|
||||
},
|
||||
|
|
|
@ -59,7 +59,7 @@ trait ParameterTrait
|
|||
return $this->getParameter('secret');
|
||||
}
|
||||
|
||||
private function setSecret(?string $secret): void
|
||||
public function setSecret(?string $secret): void
|
||||
{
|
||||
$this->setParameter('secret', $secret);
|
||||
}
|
||||
|
|
|
@ -1,232 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Polyfill\Ctype;
|
||||
|
||||
/**
|
||||
* Ctype implementation through regex.
|
||||
*
|
||||
* @internal
|
||||
*
|
||||
* @author Gert de Pagter <BackEndTea@gmail.com>
|
||||
*/
|
||||
final class Ctype
|
||||
{
|
||||
/**
|
||||
* Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-alnum
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_alnum($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is a letter, FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-alpha
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_alpha($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-cntrl
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_cntrl($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-digit
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_digit($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-graph
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_graph($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is a lowercase letter.
|
||||
*
|
||||
* @see https://php.net/ctype-lower
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_lower($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
|
||||
*
|
||||
* @see https://php.net/ctype-print
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_print($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-punct
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_punct($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
|
||||
*
|
||||
* @see https://php.net/ctype-space
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_space($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is an uppercase letter.
|
||||
*
|
||||
* @see https://php.net/ctype-upper
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_upper($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
|
||||
*
|
||||
* @see https://php.net/ctype-xdigit
|
||||
*
|
||||
* @param mixed $text
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function ctype_xdigit($text)
|
||||
{
|
||||
$text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
|
||||
|
||||
return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts integers to their char versions according to normal ctype behaviour, if needed.
|
||||
*
|
||||
* If an integer between -128 and 255 inclusive is provided,
|
||||
* it is interpreted as the ASCII value of a single character
|
||||
* (negative values have 256 added in order to allow characters in the Extended ASCII range).
|
||||
* Any other integer is interpreted as a string containing the decimal digits of the integer.
|
||||
*
|
||||
* @param mixed $int
|
||||
* @param string $function
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
private static function convert_int_to_char_for_ctype($int, $function)
|
||||
{
|
||||
if (!\is_int($int)) {
|
||||
return $int;
|
||||
}
|
||||
|
||||
if ($int < -128 || $int > 255) {
|
||||
return (string) $int;
|
||||
}
|
||||
|
||||
if (\PHP_VERSION_ID >= 80100) {
|
||||
@trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
if ($int < 0) {
|
||||
$int += 256;
|
||||
}
|
||||
|
||||
return \chr($int);
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
Copyright (c) 2018-2019 Fabien Potencier
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
|
@ -1,12 +0,0 @@
|
|||
Symfony Polyfill / Ctype
|
||||
========================
|
||||
|
||||
This component provides `ctype_*` functions to users who run php versions without the ctype extension.
|
||||
|
||||
More information can be found in the
|
||||
[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
This library is released under the [MIT license](LICENSE).
|
|
@ -1,50 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Symfony\Polyfill\Ctype as p;
|
||||
|
||||
if (\PHP_VERSION_ID >= 80000) {
|
||||
return require __DIR__.'/bootstrap80.php';
|
||||
}
|
||||
|
||||
if (!function_exists('ctype_alnum')) {
|
||||
function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); }
|
||||
}
|
||||
if (!function_exists('ctype_alpha')) {
|
||||
function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); }
|
||||
}
|
||||
if (!function_exists('ctype_cntrl')) {
|
||||
function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); }
|
||||
}
|
||||
if (!function_exists('ctype_digit')) {
|
||||
function ctype_digit($text) { return p\Ctype::ctype_digit($text); }
|
||||
}
|
||||
if (!function_exists('ctype_graph')) {
|
||||
function ctype_graph($text) { return p\Ctype::ctype_graph($text); }
|
||||
}
|
||||
if (!function_exists('ctype_lower')) {
|
||||
function ctype_lower($text) { return p\Ctype::ctype_lower($text); }
|
||||
}
|
||||
if (!function_exists('ctype_print')) {
|
||||
function ctype_print($text) { return p\Ctype::ctype_print($text); }
|
||||
}
|
||||
if (!function_exists('ctype_punct')) {
|
||||
function ctype_punct($text) { return p\Ctype::ctype_punct($text); }
|
||||
}
|
||||
if (!function_exists('ctype_space')) {
|
||||
function ctype_space($text) { return p\Ctype::ctype_space($text); }
|
||||
}
|
||||
if (!function_exists('ctype_upper')) {
|
||||
function ctype_upper($text) { return p\Ctype::ctype_upper($text); }
|
||||
}
|
||||
if (!function_exists('ctype_xdigit')) {
|
||||
function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); }
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Symfony\Polyfill\Ctype as p;
|
||||
|
||||
if (!function_exists('ctype_alnum')) {
|
||||
function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); }
|
||||
}
|
||||
if (!function_exists('ctype_alpha')) {
|
||||
function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); }
|
||||
}
|
||||
if (!function_exists('ctype_cntrl')) {
|
||||
function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); }
|
||||
}
|
||||
if (!function_exists('ctype_digit')) {
|
||||
function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); }
|
||||
}
|
||||
if (!function_exists('ctype_graph')) {
|
||||
function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); }
|
||||
}
|
||||
if (!function_exists('ctype_lower')) {
|
||||
function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); }
|
||||
}
|
||||
if (!function_exists('ctype_print')) {
|
||||
function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); }
|
||||
}
|
||||
if (!function_exists('ctype_punct')) {
|
||||
function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); }
|
||||
}
|
||||
if (!function_exists('ctype_space')) {
|
||||
function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); }
|
||||
}
|
||||
if (!function_exists('ctype_upper')) {
|
||||
function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); }
|
||||
}
|
||||
if (!function_exists('ctype_xdigit')) {
|
||||
function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); }
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
"type": "library",
|
||||
"description": "Symfony polyfill for ctype functions",
|
||||
"keywords": ["polyfill", "compatibility", "portable", "ctype"],
|
||||
"homepage": "https://symfony.com",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Gert de Pagter",
|
||||
"email": "BackEndTea@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"provide": {
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
|
||||
"files": [ "bootstrap.php" ]
|
||||
},
|
||||
"suggest": {
|
||||
"ext-ctype": "For best performance"
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.23-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,8 +9,6 @@
|
|||
Safe PHP
|
||||
========
|
||||
|
||||
**Work in progress**
|
||||
|
||||
A set of core PHP functions rewritten to throw exceptions instead of returning `false` when an error is encountered.
|
||||
|
||||
## The problem
|
||||
|
@ -115,7 +113,7 @@ tool that performs instant refactoring of your application.
|
|||
Run
|
||||
|
||||
```bash
|
||||
$ composer require --dev rector/rector:^0.7
|
||||
$ composer require --dev rector/rector
|
||||
```
|
||||
|
||||
to install `rector/rector`.
|
||||
|
@ -123,7 +121,7 @@ to install `rector/rector`.
|
|||
Run
|
||||
|
||||
```bash
|
||||
vendor/bin/rector process src/ --config vendor/thecodingmachine/safe/rector-migrate-0.7.php
|
||||
vendor/bin/rector process src/ --config vendor/thecodingmachine/safe/rector-migrate.php
|
||||
```
|
||||
|
||||
to run `rector/rector`.
|
||||
|
|
|
@ -3,19 +3,24 @@
|
|||
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
|
||||
"license": "MIT",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Safe\\": [
|
||||
"lib/",
|
||||
"deprecated/",
|
||||
"generated/"
|
||||
]
|
||||
},
|
||||
"classmap": [
|
||||
"lib/DateTime.php",
|
||||
"lib/DateTimeImmutable.php",
|
||||
"lib/Exceptions/",
|
||||
"deprecated/Exceptions/",
|
||||
"generated/Exceptions/"
|
||||
],
|
||||
"files": [
|
||||
"deprecated/apc.php",
|
||||
"deprecated/array.php",
|
||||
"deprecated/datetime.php",
|
||||
"deprecated/libevent.php",
|
||||
"deprecated/password.php",
|
||||
"deprecated/mssql.php",
|
||||
"deprecated/stats.php",
|
||||
"deprecated/strings.php",
|
||||
"lib/special_cases.php",
|
||||
"deprecated/mysqli.php",
|
||||
"generated/apache.php",
|
||||
"generated/apcu.php",
|
||||
"generated/array.php",
|
||||
|
@ -36,6 +41,7 @@
|
|||
"generated/fpm.php",
|
||||
"generated/ftp.php",
|
||||
"generated/funchand.php",
|
||||
"generated/gettext.php",
|
||||
"generated/gmp.php",
|
||||
"generated/gnupg.php",
|
||||
"generated/hash.php",
|
||||
|
@ -45,7 +51,6 @@
|
|||
"generated/image.php",
|
||||
"generated/imap.php",
|
||||
"generated/info.php",
|
||||
"generated/ingres-ii.php",
|
||||
"generated/inotify.php",
|
||||
"generated/json.php",
|
||||
"generated/ldap.php",
|
||||
|
@ -54,20 +59,14 @@
|
|||
"generated/mailparse.php",
|
||||
"generated/mbstring.php",
|
||||
"generated/misc.php",
|
||||
"generated/msql.php",
|
||||
"generated/mysql.php",
|
||||
"generated/mysqli.php",
|
||||
"generated/mysqlndMs.php",
|
||||
"generated/mysqlndQc.php",
|
||||
"generated/network.php",
|
||||
"generated/oci8.php",
|
||||
"generated/opcache.php",
|
||||
"generated/openssl.php",
|
||||
"generated/outcontrol.php",
|
||||
"generated/password.php",
|
||||
"generated/pcntl.php",
|
||||
"generated/pcre.php",
|
||||
"generated/pdf.php",
|
||||
"generated/pgsql.php",
|
||||
"generated/posix.php",
|
||||
"generated/ps.php",
|
||||
|
@ -78,7 +77,6 @@
|
|||
"generated/sem.php",
|
||||
"generated/session.php",
|
||||
"generated/shmop.php",
|
||||
"generated/simplexml.php",
|
||||
"generated/sockets.php",
|
||||
"generated/sodium.php",
|
||||
"generated/solr.php",
|
||||
|
@ -103,12 +101,13 @@
|
|||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2"
|
||||
"php": "^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^0.12",
|
||||
"thecodingmachine/phpstan-strict-rules": "^0.12",
|
||||
"squizlabs/php_codesniffer": "^3.2"
|
||||
"phpstan/phpstan": "^1.5",
|
||||
"thecodingmachine/phpstan-strict-rules": "^1.0",
|
||||
"squizlabs/php_codesniffer": "^3.2",
|
||||
"phpunit/phpunit": "^9.5"
|
||||
},
|
||||
"scripts": {
|
||||
"phpstan": "phpstan analyse lib -c phpstan.neon --level=max --no-progress -vvv",
|
||||
|
@ -117,7 +116,7 @@
|
|||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.1-dev"
|
||||
"dev-master": "2.2.x-dev"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Safe\Exceptions;
|
||||
|
||||
/**
|
||||
* @deprecated This exception is deprecated
|
||||
*/
|
||||
class PasswordException extends \ErrorException implements SafeExceptionInterface
|
||||
{
|
||||
public static function createFromPhpError(): self
|
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
namespace Safe;
|
||||
|
||||
use Safe\Exceptions\ArrayException;
|
||||
|
||||
/**
|
||||
* array_flip returns an array in flip
|
||||
* order, i.e. keys from array become values and values
|
||||
* from array become keys.
|
||||
*
|
||||
* Note that the values of array need to be valid
|
||||
* keys, i.e. they need to be either integer or
|
||||
* string. A warning will be emitted if a value has the wrong
|
||||
* type, and the key/value pair in question will not be included
|
||||
* in the result.
|
||||
*
|
||||
* If a value has several occurrences, the latest key will be
|
||||
* used as its value, and all others will be lost.
|
||||
*
|
||||
* @param array $array An array of key/value pairs to be flipped.
|
||||
* @return array Returns the flipped array on success.
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function array_flip(array $array): array
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \array_flip($array);
|
||||
if ($result === null) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function sorts an array such that array indices maintain their
|
||||
* correlation with the array elements they are associated with.
|
||||
*
|
||||
* This is used mainly when sorting associative arrays where the actual
|
||||
* element order is significant.
|
||||
*
|
||||
* @param array $array The input array.
|
||||
* @param int $sort_flags You may modify the behavior of the sort using the optional parameter
|
||||
* sort_flags, for details see
|
||||
* sort.
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function arsort(array &$array, int $sort_flags = SORT_REGULAR): void
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \arsort($array, $sort_flags);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function sorts an array such that array indices maintain
|
||||
* their correlation with the array elements they are associated
|
||||
* with. This is used mainly when sorting associative arrays where
|
||||
* the actual element order is significant.
|
||||
*
|
||||
* @param array $array The input array.
|
||||
* @param int $sort_flags You may modify the behavior of the sort using the optional
|
||||
* parameter sort_flags, for details
|
||||
* see sort.
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*/
|
||||
function asort(array &$array, int $sort_flags = SORT_REGULAR): void
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \asort($array, $sort_flags);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorts an array by key in reverse order, maintaining key to data
|
||||
* correlations. This is useful mainly for associative arrays.
|
||||
*
|
||||
* @param array $array The input array.
|
||||
* @param int $sort_flags You may modify the behavior of the sort using the optional parameter
|
||||
* sort_flags, for details see
|
||||
* sort.
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function krsort(array &$array, int $sort_flags = SORT_REGULAR): void
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \krsort($array, $sort_flags);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sorts an array by key, maintaining key to data correlations. This is
|
||||
* useful mainly for associative arrays.
|
||||
*
|
||||
* @param array $array The input array.
|
||||
* @param int $sort_flags You may modify the behavior of the sort using the optional
|
||||
* parameter sort_flags, for details
|
||||
* see sort.
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function ksort(array &$array, int $sort_flags = SORT_REGULAR): void
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \ksort($array, $sort_flags);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function sorts an array. Elements will be arranged from
|
||||
* lowest to highest when this function has completed.
|
||||
*
|
||||
* @param array $array The input array.
|
||||
* @param int $sort_flags The optional second parameter sort_flags
|
||||
* may be used to modify the sorting behavior using these values:
|
||||
*
|
||||
* Sorting type flags:
|
||||
*
|
||||
*
|
||||
* SORT_REGULAR - compare items normally;
|
||||
* the details are described in the comparison operators section
|
||||
*
|
||||
*
|
||||
* SORT_NUMERIC - compare items numerically
|
||||
*
|
||||
*
|
||||
* SORT_STRING - compare items as strings
|
||||
*
|
||||
*
|
||||
*
|
||||
* SORT_LOCALE_STRING - compare items as
|
||||
* strings, based on the current locale. It uses the locale,
|
||||
* which can be changed using setlocale
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* SORT_NATURAL - compare items as strings
|
||||
* using "natural ordering" like natsort
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* SORT_FLAG_CASE - can be combined
|
||||
* (bitwise OR) with
|
||||
* SORT_STRING or
|
||||
* SORT_NATURAL to sort strings case-insensitively
|
||||
*
|
||||
*
|
||||
*
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*/
|
||||
function sort(array &$array, int $sort_flags = SORT_REGULAR): void
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \sort($array, $sort_flags);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will sort an array by its values using a user-supplied
|
||||
* comparison function. If the array you wish to sort needs to be sorted by
|
||||
* some non-trivial criteria, you should use this function.
|
||||
*
|
||||
* @param array $array The input array.
|
||||
* @param callable $value_compare_func The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
|
||||
* Note that before PHP 7.0.0 this integer had to be in the range from -2147483648 to 2147483647.
|
||||
*
|
||||
* Returning non-integer values from the comparison
|
||||
* function, such as float, will result in an internal cast to
|
||||
* integer of the callback's return value. So values such as
|
||||
* 0.99 and 0.1 will both be cast to an integer value of 0, which will
|
||||
* compare such values as equal.
|
||||
* @throws ArrayException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function usort(array &$array, callable $value_compare_func): void
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \usort($array, $value_compare_func);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array by using the values from the
|
||||
* keys array as keys and the values from the
|
||||
* values array as the corresponding values.
|
||||
*
|
||||
* @param array $keys Array of keys to be used. Illegal values for key will be
|
||||
* converted to string.
|
||||
* @param array $values Array of values to be used
|
||||
* @return array Returns the combined array, FALSE if the number of elements
|
||||
* for each array isn't equal.
|
||||
* @throws ArrayException
|
||||
* @deprecated
|
||||
*
|
||||
*/
|
||||
function array_combine(array $keys, array $values): array
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \array_combine($keys, $values);
|
||||
if ($result === false) {
|
||||
throw ArrayException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace Safe;
|
||||
|
||||
use Safe\Exceptions\DatetimeException;
|
||||
|
||||
/**
|
||||
* Identical to the date function except that
|
||||
* the time returned is Greenwich Mean Time (GMT).
|
||||
*
|
||||
* @param string $format The format of the outputted date string. See the formatting
|
||||
* options for the date function.
|
||||
* @param int $timestamp The optional timestamp parameter is an
|
||||
* integer Unix timestamp that defaults to the current
|
||||
* local time if a timestamp is not given. In other
|
||||
* words, it defaults to the value of time.
|
||||
* @return string Returns a formatted date string. If a non-numeric value is used for
|
||||
* timestamp, FALSE is returned and an
|
||||
* E_WARNING level error is emitted.
|
||||
* @throws DatetimeException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function gmdate(string $format, int $timestamp = null): string
|
||||
{
|
||||
error_clear_last();
|
||||
if ($timestamp !== null) {
|
||||
$result = \gmdate($format, $timestamp);
|
||||
} else {
|
||||
$result = \gmdate($format);
|
||||
}
|
||||
if ($result === false) {
|
||||
throw DatetimeException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
|
@ -11,6 +11,10 @@ return [
|
|||
'apc_inc',
|
||||
'apc_load_constants',
|
||||
'apc_sma_info',
|
||||
'arsort',
|
||||
'array_combine',
|
||||
'array_flip',
|
||||
'asort',
|
||||
'event_add',
|
||||
'event_base_loopbreak',
|
||||
'event_base_loopexit',
|
||||
|
@ -30,10 +34,13 @@ return [
|
|||
'event_priority_set',
|
||||
'event_set',
|
||||
'event_timer_set',
|
||||
'gmdate',
|
||||
'imagepsencodefont',
|
||||
'imagepsextendfont',
|
||||
'imagepsfreefont',
|
||||
'imagepsslantfont',
|
||||
'krsort',
|
||||
'ksort',
|
||||
'mssql_bind',
|
||||
'mssql_close',
|
||||
'mssql_connect',
|
||||
|
@ -48,9 +55,15 @@ return [
|
|||
'mssql_pconnect',
|
||||
'mssql_query',
|
||||
'mssql_select_db',
|
||||
'mysqli_get_client_stats',
|
||||
'password_hash',
|
||||
'sort',
|
||||
'stats_covariance',
|
||||
'stats_standard_deviation',
|
||||
'stats_stat_correlation',
|
||||
'stats_stat_innerproduct',
|
||||
'stats_variance',
|
||||
'substr',
|
||||
'usort',
|
||||
'vsprintf',
|
||||
];
|
||||
|
|
|
@ -4,28 +4,8 @@ namespace Safe;
|
|||
|
||||
use Safe\Exceptions\MysqliException;
|
||||
|
||||
/**
|
||||
* Returns an empty array.
|
||||
* Available only with mysqlnd.
|
||||
*
|
||||
* @return array Returns an empty array on success, FALSE otherwise.
|
||||
* @throws MysqliException
|
||||
*
|
||||
*/
|
||||
function mysqli_get_cache_stats(): array
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \mysqli_get_cache_stats();
|
||||
if ($result === false) {
|
||||
throw MysqliException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns client per-process statistics.
|
||||
* Available only with mysqlnd.
|
||||
*
|
||||
* @return array Returns an array with client stats if success, FALSE otherwise.
|
||||
* @throws MysqliException
|
|
@ -109,6 +109,7 @@ use Safe\Exceptions\PasswordException;
|
|||
* the password_verify function to verify the hash without
|
||||
* needing separate storage for the salt or algorithm information.
|
||||
* @throws PasswordException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function password_hash(string $password, $algo, array $options = null): string
|
|
@ -0,0 +1,677 @@
|
|||
<?php
|
||||
|
||||
namespace Safe;
|
||||
|
||||
use Safe\Exceptions\StringsException;
|
||||
|
||||
/**
|
||||
* Returns a string produced according to the formatting string
|
||||
* format.
|
||||
*
|
||||
* @param string $format The format string is composed of zero or more directives:
|
||||
* ordinary characters (excluding %) that are
|
||||
* copied directly to the result and conversion
|
||||
* specifications, each of which results in fetching its
|
||||
* own parameter.
|
||||
*
|
||||
* A conversion specification follows this prototype:
|
||||
* %[argnum$][flags][width][.precision]specifier.
|
||||
*
|
||||
* An integer followed by a dollar sign $,
|
||||
* to specify which number argument to treat in the conversion.
|
||||
*
|
||||
*
|
||||
* Flags
|
||||
*
|
||||
*
|
||||
*
|
||||
* Flag
|
||||
* Description
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* -
|
||||
*
|
||||
* Left-justify within the given field width;
|
||||
* Right justification is the default
|
||||
*
|
||||
*
|
||||
*
|
||||
* +
|
||||
*
|
||||
* Prefix positive numbers with a plus sign
|
||||
* +; Default only negative
|
||||
* are prefixed with a negative sign.
|
||||
*
|
||||
*
|
||||
*
|
||||
* (space)
|
||||
*
|
||||
* Pads the result with spaces.
|
||||
* This is the default.
|
||||
*
|
||||
*
|
||||
*
|
||||
* 0
|
||||
*
|
||||
* Only left-pads numbers with zeros.
|
||||
* With s specifiers this can
|
||||
* also right-pad with zeros.
|
||||
*
|
||||
*
|
||||
*
|
||||
* '(char)
|
||||
*
|
||||
* Pads the result with the character (char).
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* An integer that says how many characters (minimum)
|
||||
* this conversion should result in.
|
||||
*
|
||||
* A period . followed by an integer
|
||||
* who's meaning depends on the specifier:
|
||||
*
|
||||
*
|
||||
*
|
||||
* For e, E,
|
||||
* f and F
|
||||
* specifiers: this is the number of digits to be printed
|
||||
* after the decimal point (by default, this is 6).
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* For g and G
|
||||
* specifiers: this is the maximum number of significant
|
||||
* digits to be printed.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* For s specifier: it acts as a cutoff point,
|
||||
* setting a maximum character limit to the string.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* If the period is specified without an explicit value for precision,
|
||||
* 0 is assumed.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* Specifiers
|
||||
*
|
||||
*
|
||||
*
|
||||
* Specifier
|
||||
* Description
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* %
|
||||
*
|
||||
* A literal percent character. No argument is required.
|
||||
*
|
||||
*
|
||||
*
|
||||
* b
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a binary number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* c
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as the character with that ASCII.
|
||||
*
|
||||
*
|
||||
*
|
||||
* d
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a (signed) decimal number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* e
|
||||
*
|
||||
* The argument is treated as scientific notation (e.g. 1.2e+2).
|
||||
* The precision specifier stands for the number of digits after the
|
||||
* decimal point since PHP 5.2.1. In earlier versions, it was taken as
|
||||
* number of significant digits (one less).
|
||||
*
|
||||
*
|
||||
*
|
||||
* E
|
||||
*
|
||||
* Like the e specifier but uses
|
||||
* uppercase letter (e.g. 1.2E+2).
|
||||
*
|
||||
*
|
||||
*
|
||||
* f
|
||||
*
|
||||
* The argument is treated as a float and presented
|
||||
* as a floating-point number (locale aware).
|
||||
*
|
||||
*
|
||||
*
|
||||
* F
|
||||
*
|
||||
* The argument is treated as a float and presented
|
||||
* as a floating-point number (non-locale aware).
|
||||
* Available as of PHP 5.0.3.
|
||||
*
|
||||
*
|
||||
*
|
||||
* g
|
||||
*
|
||||
*
|
||||
* General format.
|
||||
*
|
||||
*
|
||||
* Let P equal the precision if nonzero, 6 if the precision is omitted,
|
||||
* or 1 if the precision is zero.
|
||||
* Then, if a conversion with style E would have an exponent of X:
|
||||
*
|
||||
*
|
||||
* If P > X ≥ −4, the conversion is with style f and precision P − (X + 1).
|
||||
* Otherwise, the conversion is with style e and precision P − 1.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* G
|
||||
*
|
||||
* Like the g specifier but uses
|
||||
* E and f.
|
||||
*
|
||||
*
|
||||
*
|
||||
* o
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as an octal number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* s
|
||||
*
|
||||
* The argument is treated and presented as a string.
|
||||
*
|
||||
*
|
||||
*
|
||||
* u
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as an unsigned decimal number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* x
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a hexadecimal number (with lowercase letters).
|
||||
*
|
||||
*
|
||||
*
|
||||
* X
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a hexadecimal number (with uppercase letters).
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* General format.
|
||||
*
|
||||
* Let P equal the precision if nonzero, 6 if the precision is omitted,
|
||||
* or 1 if the precision is zero.
|
||||
* Then, if a conversion with style E would have an exponent of X:
|
||||
*
|
||||
* If P > X ≥ −4, the conversion is with style f and precision P − (X + 1).
|
||||
* Otherwise, the conversion is with style e and precision P − 1.
|
||||
*
|
||||
* The c type specifier ignores padding and width
|
||||
*
|
||||
* Attempting to use a combination of the string and width specifiers with character sets that require more than one byte per character may result in unexpected results
|
||||
*
|
||||
* Variables will be co-erced to a suitable type for the specifier:
|
||||
*
|
||||
* Type Handling
|
||||
*
|
||||
*
|
||||
*
|
||||
* Type
|
||||
* Specifiers
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* string
|
||||
* s
|
||||
*
|
||||
*
|
||||
* integer
|
||||
*
|
||||
* d,
|
||||
* u,
|
||||
* c,
|
||||
* o,
|
||||
* x,
|
||||
* X,
|
||||
* b
|
||||
*
|
||||
*
|
||||
*
|
||||
* double
|
||||
*
|
||||
* g,
|
||||
* G,
|
||||
* e,
|
||||
* E,
|
||||
* f,
|
||||
* F
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param mixed $params
|
||||
* @return string Returns a string produced according to the formatting string
|
||||
* format.
|
||||
* @throws StringsException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function sprintf(string $format, ...$params): string
|
||||
{
|
||||
error_clear_last();
|
||||
if ($params !== []) {
|
||||
$result = \sprintf($format, ...$params);
|
||||
} else {
|
||||
$result = \sprintf($format);
|
||||
}
|
||||
if ($result === false) {
|
||||
throw StringsException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the portion of string specified by the
|
||||
* start and length parameters.
|
||||
*
|
||||
* @param string $string The input string.
|
||||
* @param int $start If start is non-negative, the returned string
|
||||
* will start at the start'th position in
|
||||
* string, counting from zero. For instance,
|
||||
* in the string 'abcdef', the character at
|
||||
* position 0 is 'a', the
|
||||
* character at position 2 is
|
||||
* 'c', and so forth.
|
||||
*
|
||||
* If start is negative, the returned string
|
||||
* will start at the start'th character
|
||||
* from the end of string.
|
||||
*
|
||||
* If string is less than
|
||||
* start characters long, FALSE will be returned.
|
||||
*
|
||||
*
|
||||
* Using a negative start
|
||||
*
|
||||
*
|
||||
* ]]>
|
||||
*
|
||||
*
|
||||
* @param int $length If length is given and is positive, the string
|
||||
* returned will contain at most length characters
|
||||
* beginning from start (depending on the length of
|
||||
* string).
|
||||
*
|
||||
* If length is given and is negative, then that many
|
||||
* characters will be omitted from the end of string
|
||||
* (after the start position has been calculated when a
|
||||
* start is negative). If
|
||||
* start denotes the position of this truncation or
|
||||
* beyond, FALSE will be returned.
|
||||
*
|
||||
* If length is given and is 0,
|
||||
* FALSE or NULL, an empty string will be returned.
|
||||
*
|
||||
* If length is omitted, the substring starting from
|
||||
* start until the end of the string will be
|
||||
* returned.
|
||||
* @return string Returns the extracted part of string;, or
|
||||
* an empty string.
|
||||
* @throws StringsException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*
|
||||
*/
|
||||
function substr(string $string, int $start, int $length = null): string
|
||||
{
|
||||
error_clear_last();
|
||||
if ($length !== null) {
|
||||
$result = \substr($string, $start, $length);
|
||||
} else {
|
||||
$result = \substr($string, $start);
|
||||
}
|
||||
if ($result === false) {
|
||||
throw StringsException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Operates as sprintf but accepts an array of
|
||||
* arguments, rather than a variable number of arguments.
|
||||
*
|
||||
* @param string $format The format string is composed of zero or more directives:
|
||||
* ordinary characters (excluding %) that are
|
||||
* copied directly to the result and conversion
|
||||
* specifications, each of which results in fetching its
|
||||
* own parameter.
|
||||
*
|
||||
* A conversion specification follows this prototype:
|
||||
* %[argnum$][flags][width][.precision]specifier.
|
||||
*
|
||||
* An integer followed by a dollar sign $,
|
||||
* to specify which number argument to treat in the conversion.
|
||||
*
|
||||
*
|
||||
* Flags
|
||||
*
|
||||
*
|
||||
*
|
||||
* Flag
|
||||
* Description
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* -
|
||||
*
|
||||
* Left-justify within the given field width;
|
||||
* Right justification is the default
|
||||
*
|
||||
*
|
||||
*
|
||||
* +
|
||||
*
|
||||
* Prefix positive numbers with a plus sign
|
||||
* +; Default only negative
|
||||
* are prefixed with a negative sign.
|
||||
*
|
||||
*
|
||||
*
|
||||
* (space)
|
||||
*
|
||||
* Pads the result with spaces.
|
||||
* This is the default.
|
||||
*
|
||||
*
|
||||
*
|
||||
* 0
|
||||
*
|
||||
* Only left-pads numbers with zeros.
|
||||
* With s specifiers this can
|
||||
* also right-pad with zeros.
|
||||
*
|
||||
*
|
||||
*
|
||||
* '(char)
|
||||
*
|
||||
* Pads the result with the character (char).
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* An integer that says how many characters (minimum)
|
||||
* this conversion should result in.
|
||||
*
|
||||
* A period . followed by an integer
|
||||
* who's meaning depends on the specifier:
|
||||
*
|
||||
*
|
||||
*
|
||||
* For e, E,
|
||||
* f and F
|
||||
* specifiers: this is the number of digits to be printed
|
||||
* after the decimal point (by default, this is 6).
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* For g and G
|
||||
* specifiers: this is the maximum number of significant
|
||||
* digits to be printed.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* For s specifier: it acts as a cutoff point,
|
||||
* setting a maximum character limit to the string.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* If the period is specified without an explicit value for precision,
|
||||
* 0 is assumed.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* Specifiers
|
||||
*
|
||||
*
|
||||
*
|
||||
* Specifier
|
||||
* Description
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* %
|
||||
*
|
||||
* A literal percent character. No argument is required.
|
||||
*
|
||||
*
|
||||
*
|
||||
* b
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a binary number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* c
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as the character with that ASCII.
|
||||
*
|
||||
*
|
||||
*
|
||||
* d
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a (signed) decimal number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* e
|
||||
*
|
||||
* The argument is treated as scientific notation (e.g. 1.2e+2).
|
||||
* The precision specifier stands for the number of digits after the
|
||||
* decimal point since PHP 5.2.1. In earlier versions, it was taken as
|
||||
* number of significant digits (one less).
|
||||
*
|
||||
*
|
||||
*
|
||||
* E
|
||||
*
|
||||
* Like the e specifier but uses
|
||||
* uppercase letter (e.g. 1.2E+2).
|
||||
*
|
||||
*
|
||||
*
|
||||
* f
|
||||
*
|
||||
* The argument is treated as a float and presented
|
||||
* as a floating-point number (locale aware).
|
||||
*
|
||||
*
|
||||
*
|
||||
* F
|
||||
*
|
||||
* The argument is treated as a float and presented
|
||||
* as a floating-point number (non-locale aware).
|
||||
* Available as of PHP 5.0.3.
|
||||
*
|
||||
*
|
||||
*
|
||||
* g
|
||||
*
|
||||
*
|
||||
* General format.
|
||||
*
|
||||
*
|
||||
* Let P equal the precision if nonzero, 6 if the precision is omitted,
|
||||
* or 1 if the precision is zero.
|
||||
* Then, if a conversion with style E would have an exponent of X:
|
||||
*
|
||||
*
|
||||
* If P > X ≥ −4, the conversion is with style f and precision P − (X + 1).
|
||||
* Otherwise, the conversion is with style e and precision P − 1.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* G
|
||||
*
|
||||
* Like the g specifier but uses
|
||||
* E and f.
|
||||
*
|
||||
*
|
||||
*
|
||||
* o
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as an octal number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* s
|
||||
*
|
||||
* The argument is treated and presented as a string.
|
||||
*
|
||||
*
|
||||
*
|
||||
* u
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as an unsigned decimal number.
|
||||
*
|
||||
*
|
||||
*
|
||||
* x
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a hexadecimal number (with lowercase letters).
|
||||
*
|
||||
*
|
||||
*
|
||||
* X
|
||||
*
|
||||
* The argument is treated as an integer and presented
|
||||
* as a hexadecimal number (with uppercase letters).
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* General format.
|
||||
*
|
||||
* Let P equal the precision if nonzero, 6 if the precision is omitted,
|
||||
* or 1 if the precision is zero.
|
||||
* Then, if a conversion with style E would have an exponent of X:
|
||||
*
|
||||
* If P > X ≥ −4, the conversion is with style f and precision P − (X + 1).
|
||||
* Otherwise, the conversion is with style e and precision P − 1.
|
||||
*
|
||||
* The c type specifier ignores padding and width
|
||||
*
|
||||
* Attempting to use a combination of the string and width specifiers with character sets that require more than one byte per character may result in unexpected results
|
||||
*
|
||||
* Variables will be co-erced to a suitable type for the specifier:
|
||||
*
|
||||
* Type Handling
|
||||
*
|
||||
*
|
||||
*
|
||||
* Type
|
||||
* Specifiers
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* string
|
||||
* s
|
||||
*
|
||||
*
|
||||
* integer
|
||||
*
|
||||
* d,
|
||||
* u,
|
||||
* c,
|
||||
* o,
|
||||
* x,
|
||||
* X,
|
||||
* b
|
||||
*
|
||||
*
|
||||
*
|
||||
* double
|
||||
*
|
||||
* g,
|
||||
* G,
|
||||
* e,
|
||||
* E,
|
||||
* f,
|
||||
* F
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param array $args
|
||||
* @return string Return array values as a formatted string according to
|
||||
* format.
|
||||
* @throws StringsException
|
||||
* @deprecated The Safe version of this function is no longer needed in PHP 8.0+
|
||||
*/
|
||||
function vsprintf(string $format, array $args): string
|
||||
{
|
||||
error_clear_last();
|
||||
$result = \vsprintf($format, $args);
|
||||
if ($result === false) {
|
||||
throw StringsException::createFromPhpError();
|
||||
}
|
||||
return $result;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue