composer update
This commit is contained in:
+4
-1
@@ -93,7 +93,10 @@
|
|||||||
"config": {
|
"config": {
|
||||||
"preferred-install": "dist",
|
"preferred-install": "dist",
|
||||||
"sort-packages": true,
|
"sort-packages": true,
|
||||||
"optimize-autoloader": true
|
"optimize-autoloader": true,
|
||||||
|
"platform": {
|
||||||
|
"php": "8.3.31"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"prefer-stable": true
|
"prefer-stable": true
|
||||||
|
|||||||
Generated
+487
-407
File diff suppressed because it is too large
Load Diff
Vendored
+2
-3
@@ -112,9 +112,8 @@ if (PHP_VERSION_ID < 80000) {
|
|||||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||||
) {
|
) {
|
||||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/brianium/paratest/bin/paratest');
|
return include("phpvfscomposer://" . __DIR__ . '/..'.'/brianium/paratest/bin/paratest');
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
include __DIR__ . '/..'.'/brianium/paratest/bin/paratest';
|
return include __DIR__ . '/..'.'/brianium/paratest/bin/paratest';
|
||||||
|
|||||||
Vendored
+5
-37
@@ -1,37 +1,5 @@
|
|||||||
#!/usr/bin/env sh
|
@ECHO OFF
|
||||||
|
setlocal DISABLEDELAYEDEXPANSION
|
||||||
# Support bash to support `source` with fallback on $0 if this does not run with bash
|
SET BIN_TARGET=%~dp0/paratest
|
||||||
# https://stackoverflow.com/a/35006505/6512
|
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
|
||||||
selfArg="$BASH_SOURCE"
|
php "%BIN_TARGET%" %*
|
||||||
if [ -z "$selfArg" ]; then
|
|
||||||
selfArg="$0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
self=$(realpath $selfArg 2> /dev/null)
|
|
||||||
if [ -z "$self" ]; then
|
|
||||||
self="$selfArg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dir=$(cd "${self%[/\\]*}" > /dev/null; cd '../brianium/paratest/bin' && pwd)
|
|
||||||
|
|
||||||
if [ -d /proc/cygdrive ]; then
|
|
||||||
case $(which php) in
|
|
||||||
$(readlink -n /proc/cygdrive)/*)
|
|
||||||
# We are in Cygwin using Windows php, so the path must be translated
|
|
||||||
dir=$(cygpath -m "$dir");
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
export COMPOSER_RUNTIME_BIN_DIR=$(cd "${self%[/\\]*}" > /dev/null; pwd)
|
|
||||||
|
|
||||||
# If bash is sourcing this file, we have to source the target as well
|
|
||||||
bashSource="$BASH_SOURCE"
|
|
||||||
if [ -n "$bashSource" ]; then
|
|
||||||
if [ "$bashSource" != "$0" ]; then
|
|
||||||
source "${dir}/paratest.bat" "$@"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
"${dir}/paratest.bat" "$@"
|
|
||||||
|
|||||||
Vendored
+2
-3
@@ -112,9 +112,8 @@ if (PHP_VERSION_ID < 80000) {
|
|||||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||||
) {
|
) {
|
||||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/brianium/paratest/bin/paratest_for_phpstorm');
|
return include("phpvfscomposer://" . __DIR__ . '/..'.'/brianium/paratest/bin/paratest_for_phpstorm');
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
include __DIR__ . '/..'.'/brianium/paratest/bin/paratest_for_phpstorm';
|
return include __DIR__ . '/..'.'/brianium/paratest/bin/paratest_for_phpstorm';
|
||||||
|
|||||||
Vendored
+2
-3
@@ -112,9 +112,8 @@ if (PHP_VERSION_ID < 80000) {
|
|||||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||||
) {
|
) {
|
||||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse');
|
return include("phpvfscomposer://" . __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse');
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
include __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse';
|
return include __DIR__ . '/..'.'/nikic/php-parser/bin/php-parse';
|
||||||
|
|||||||
Vendored
+2
-3
@@ -115,9 +115,8 @@ if (PHP_VERSION_ID < 80000) {
|
|||||||
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|
||||||
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
|
||||||
) {
|
) {
|
||||||
include("phpvfscomposer://" . __DIR__ . '/..'.'/phpunit/phpunit/phpunit');
|
return include("phpvfscomposer://" . __DIR__ . '/..'.'/phpunit/phpunit/phpunit');
|
||||||
exit(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
include __DIR__ . '/..'.'/phpunit/phpunit/phpunit';
|
return include __DIR__ . '/..'.'/phpunit/phpunit/phpunit';
|
||||||
|
|||||||
Vendored
+2
-23
@@ -4,14 +4,14 @@ ParaTest
|
|||||||
[](https://packagist.org/packages/brianium/paratest)
|
[](https://packagist.org/packages/brianium/paratest)
|
||||||
[](https://packagist.org/packages/brianium/paratest)
|
[](https://packagist.org/packages/brianium/paratest)
|
||||||
[](https://github.com/paratestphp/paratest/actions)
|
[](https://github.com/paratestphp/paratest/actions)
|
||||||
[](https://dashboard.stryker-mutator.io/reports/github.com/paratestphp/paratest/7.x)
|
[](https://dashboard.stryker-mutator.io/reports/github.com/paratestphp/paratest/7.x)
|
||||||
|
|
||||||
The objective of ParaTest is to support parallel testing in PHPUnit. Provided you have well-written PHPUnit tests, you can drop `paratest` in your project and
|
The objective of ParaTest is to support parallel testing in PHPUnit. Provided you have well-written PHPUnit tests, you can drop `paratest` in your project and
|
||||||
start using it with no additional bootstrap or configurations!
|
start using it with no additional bootstrap or configurations!
|
||||||
|
|
||||||
Benefits:
|
Benefits:
|
||||||
|
|
||||||
* Zero configuration. After the installation, run with `vendor/bin/paratest`. That's it!
|
* Zero configuration. After the installation, run with `vendor/bin/paratest` to parallelize by TestCase or `vendor/bin/paratest --functional` to parallelize by Test. That's it!
|
||||||
* Code Coverage report combining. Run your tests in N parallel processes and all the code coverage output will be combined into one report.
|
* Code Coverage report combining. Run your tests in N parallel processes and all the code coverage output will be combined into one report.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
@@ -72,14 +72,6 @@ If you have `xDebug` installed, activating it by the environment variable is eno
|
|||||||
XDEBUG_MODE=coverage vendor/bin/paratest
|
XDEBUG_MODE=coverage vendor/bin/paratest
|
||||||
```
|
```
|
||||||
|
|
||||||
### PHPDBG
|
|
||||||
|
|
||||||
`PHPDBG` is automatically detected and used in the subprocesses if it's the running binary of the main process:
|
|
||||||
|
|
||||||
```
|
|
||||||
phpdbg vendor/bin/paratest
|
|
||||||
```
|
|
||||||
|
|
||||||
## Initial setup for all tests
|
## Initial setup for all tests
|
||||||
|
|
||||||
Because ParaTest runs multiple processes in parallel, each with their own instance of the PHP interpreter,
|
Because ParaTest runs multiple processes in parallel, each with their own instance of the PHP interpreter,
|
||||||
@@ -136,19 +128,6 @@ When a sub-process fails, the originating command is given in the output and can
|
|||||||
to be run and debugged. All internal commands run with `--printer [...]\NullPhpunitPrinter` which silence the original
|
to be run and debugged. All internal commands run with `--printer [...]\NullPhpunitPrinter` which silence the original
|
||||||
PHPUnit output: during a debugging run remove that option to restore the output and see what PHPUnit is doing.
|
PHPUnit output: during a debugging run remove that option to restore the output and see what PHPUnit is doing.
|
||||||
|
|
||||||
## Windows
|
|
||||||
|
|
||||||
Windows users be sure to use the appropriate batch files.
|
|
||||||
|
|
||||||
An example being:
|
|
||||||
|
|
||||||
`vendor\bin\paratest.bat ...`
|
|
||||||
|
|
||||||
ParaTest assumes [PSR-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) for loading tests.
|
|
||||||
|
|
||||||
For convenience, ParaTest for Windows uses 79 columns mode to prevent blank lines in the standard
|
|
||||||
80x25 windows console.
|
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
1. Constants, static methods, static variables and everything exposed by test classes consumed by other test classes
|
1. Constants, static methods, static variables and everything exposed by test classes consumed by other test classes
|
||||||
|
|||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
@ECHO OFF
|
|
||||||
SET BIN_TARGET=%~dp0\"../bin"\paratest
|
|
||||||
php "%BIN_TARGET%" %*
|
|
||||||
+8
-2
@@ -9,10 +9,12 @@ use ParaTest\WrapperRunner\WrapperWorker;
|
|||||||
$getopt = getopt('', [
|
$getopt = getopt('', [
|
||||||
'status-file:',
|
'status-file:',
|
||||||
'progress-file:',
|
'progress-file:',
|
||||||
|
'unexpected-output-file:',
|
||||||
'testresult-file:',
|
'testresult-file:',
|
||||||
'teamcity-file:',
|
'teamcity-file:',
|
||||||
'testdox-file:',
|
'testdox-file:',
|
||||||
'testdox-color',
|
'testdox-color',
|
||||||
|
'testdox-columns:',
|
||||||
'phpunit-argv:',
|
'phpunit-argv:',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -24,8 +26,8 @@ use ParaTest\WrapperRunner\WrapperWorker;
|
|||||||
|
|
||||||
foreach ($composerAutoloadFiles as $file) {
|
foreach ($composerAutoloadFiles as $file) {
|
||||||
if (file_exists($file)) {
|
if (file_exists($file)) {
|
||||||
require_once $file;
|
|
||||||
define('PHPUNIT_COMPOSER_INSTALL', $file);
|
define('PHPUNIT_COMPOSER_INSTALL', $file);
|
||||||
|
require_once $file;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -36,9 +38,11 @@ use ParaTest\WrapperRunner\WrapperWorker;
|
|||||||
assert(is_resource($statusFile));
|
assert(is_resource($statusFile));
|
||||||
|
|
||||||
assert(isset($getopt['progress-file']) && is_string($getopt['progress-file']));
|
assert(isset($getopt['progress-file']) && is_string($getopt['progress-file']));
|
||||||
|
assert(isset($getopt['unexpected-output-file']) && is_string($getopt['unexpected-output-file']));
|
||||||
assert(isset($getopt['testresult-file']) && is_string($getopt['testresult-file']));
|
assert(isset($getopt['testresult-file']) && is_string($getopt['testresult-file']));
|
||||||
assert(!isset($getopt['teamcity-file']) || is_string($getopt['teamcity-file']));
|
assert(!isset($getopt['teamcity-file']) || is_string($getopt['teamcity-file']));
|
||||||
assert(!isset($getopt['testdox-file']) || is_string($getopt['testdox-file']));
|
assert(!isset($getopt['testdox-file']) || is_string($getopt['testdox-file']));
|
||||||
|
assert(!isset($getopt['testdox-columns']) || $getopt['testdox-columns'] === (string) (int) $getopt['testdox-columns']);
|
||||||
|
|
||||||
assert(isset($getopt['phpunit-argv']) && is_string($getopt['phpunit-argv']));
|
assert(isset($getopt['phpunit-argv']) && is_string($getopt['phpunit-argv']));
|
||||||
$phpunitArgv = unserialize($getopt['phpunit-argv'], ['allowed_classes' => false]);
|
$phpunitArgv = unserialize($getopt['phpunit-argv'], ['allowed_classes' => false]);
|
||||||
@@ -47,10 +51,12 @@ use ParaTest\WrapperRunner\WrapperWorker;
|
|||||||
$application = new ApplicationForWrapperWorker(
|
$application = new ApplicationForWrapperWorker(
|
||||||
$phpunitArgv,
|
$phpunitArgv,
|
||||||
$getopt['progress-file'],
|
$getopt['progress-file'],
|
||||||
|
$getopt['unexpected-output-file'],
|
||||||
$getopt['testresult-file'],
|
$getopt['testresult-file'],
|
||||||
$getopt['teamcity-file'] ?? null,
|
$getopt['teamcity-file'] ?? null,
|
||||||
$getopt['testdox-file'] ?? null,
|
$getopt['testdox-file'] ?? null,
|
||||||
isset($getopt['testdox-color']),
|
isset($getopt['testdox-color']),
|
||||||
|
isset($getopt['testdox-columns']) ? (int) $getopt['testdox-columns'] : null,
|
||||||
);
|
);
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -66,7 +72,7 @@ use ParaTest\WrapperRunner\WrapperWorker;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// It must be a 1 byte string to ensure filesize() is equal to the number of tests executed
|
// It must be a 1 byte string to ensure filesize() is equal to the number of tests executed
|
||||||
$exitCode = $application->runTest(trim($testPath));
|
$exitCode = $application->runTest(trim($testPath, "\n"));
|
||||||
|
|
||||||
fwrite($statusFile, (string) $exitCode);
|
fwrite($statusFile, (string) $exitCode);
|
||||||
fflush($statusFile);
|
fflush($statusFile);
|
||||||
|
|||||||
+17
-19
@@ -33,32 +33,31 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": "~8.1.0 || ~8.2.0",
|
"php": "~8.2.0 || ~8.3.0 || ~8.4.0",
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-pcre": "*",
|
"ext-pcre": "*",
|
||||||
"ext-reflection": "*",
|
"ext-reflection": "*",
|
||||||
"ext-simplexml": "*",
|
"ext-simplexml": "*",
|
||||||
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
|
"fidry/cpu-core-counter": "^1.2.0",
|
||||||
"jean85/pretty-package-versions": "^2.0.5",
|
"jean85/pretty-package-versions": "^2.0.6",
|
||||||
"phpunit/php-code-coverage": "^10.0.2",
|
"phpunit/php-code-coverage": "^10.1.16",
|
||||||
"phpunit/php-file-iterator": "^4.0.1",
|
"phpunit/php-file-iterator": "^4.1.0",
|
||||||
"phpunit/php-timer": "^6.0",
|
"phpunit/php-timer": "^6.0.0",
|
||||||
"phpunit/phpunit": "^10.0.16",
|
"phpunit/phpunit": "^10.5.47",
|
||||||
"sebastian/environment": "^6.0",
|
"sebastian/environment": "^6.1.0",
|
||||||
"symfony/console": "^6.2.7",
|
"symfony/console": "^6.4.7 || ^7.1.5",
|
||||||
"symfony/process": "^6.2.7"
|
"symfony/process": "^6.4.7 || ^7.1.5"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-pcov": "*",
|
"ext-pcov": "*",
|
||||||
"ext-posix": "*",
|
"ext-posix": "*",
|
||||||
"doctrine/coding-standard": "^11.1.0",
|
"doctrine/coding-standard": "^12.0.0",
|
||||||
"infection/infection": "^0.26.19",
|
"phpstan/phpstan": "^1.12.6",
|
||||||
"phpstan/phpstan": "^1.10.6",
|
"phpstan/phpstan-deprecation-rules": "^1.2.1",
|
||||||
"phpstan/phpstan-deprecation-rules": "^1.1.2",
|
"phpstan/phpstan-phpunit": "^1.4.0",
|
||||||
"phpstan/phpstan-phpunit": "^1.3.10",
|
"phpstan/phpstan-strict-rules": "^1.6.1",
|
||||||
"phpstan/phpstan-strict-rules": "^1.5",
|
"squizlabs/php_codesniffer": "^3.10.3",
|
||||||
"squizlabs/php_codesniffer": "^3.7.2",
|
"symfony/filesystem": "^6.4.3 || ^7.1.5"
|
||||||
"symfony/filesystem": "^6.2.7"
|
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@@ -74,7 +73,6 @@
|
|||||||
},
|
},
|
||||||
"bin": [
|
"bin": [
|
||||||
"bin/paratest",
|
"bin/paratest",
|
||||||
"bin/paratest.bat",
|
|
||||||
"bin/paratest_for_phpstorm"
|
"bin/paratest_for_phpstorm"
|
||||||
],
|
],
|
||||||
"config": {
|
"config": {
|
||||||
|
|||||||
+1
-3
@@ -18,7 +18,7 @@ use function ksort;
|
|||||||
final class LogMerger
|
final class LogMerger
|
||||||
{
|
{
|
||||||
/** @param list<SplFileInfo> $junitFiles */
|
/** @param list<SplFileInfo> $junitFiles */
|
||||||
public function merge(array $junitFiles): TestSuite
|
public function merge(array $junitFiles): ?TestSuite
|
||||||
{
|
{
|
||||||
$mainSuite = null;
|
$mainSuite = null;
|
||||||
foreach ($junitFiles as $junitFile) {
|
foreach ($junitFiles as $junitFile) {
|
||||||
@@ -67,8 +67,6 @@ final class LogMerger
|
|||||||
$mainSuite = $this->mergeSuites($mainSuite, $otherSuite);
|
$mainSuite = $this->mergeSuites($mainSuite, $otherSuite);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert($mainSuite !== null);
|
|
||||||
|
|
||||||
return $mainSuite;
|
return $mainSuite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -23,6 +23,7 @@ use const ENT_XML1;
|
|||||||
/** @internal */
|
/** @internal */
|
||||||
final class Writer
|
final class Writer
|
||||||
{
|
{
|
||||||
|
private const TESTSUITES_NAME = 'PHPUnit tests';
|
||||||
private readonly DOMDocument $document;
|
private readonly DOMDocument $document;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
@@ -47,6 +48,7 @@ final class Writer
|
|||||||
{
|
{
|
||||||
$xmlTestsuites = $this->document->createElement('testsuites');
|
$xmlTestsuites = $this->document->createElement('testsuites');
|
||||||
$xmlTestsuites->appendChild($this->createSuiteNode($testSuite));
|
$xmlTestsuites->appendChild($this->createSuiteNode($testSuite));
|
||||||
|
$xmlTestsuites->setAttribute('name', self::TESTSUITES_NAME);
|
||||||
$this->document->appendChild($xmlTestsuites);
|
$this->document->appendChild($xmlTestsuites);
|
||||||
|
|
||||||
$xml = $this->document->saveXML();
|
$xml = $this->document->saveXML();
|
||||||
@@ -58,7 +60,7 @@ final class Writer
|
|||||||
private function createSuiteNode(TestSuite $parentSuite): DOMElement
|
private function createSuiteNode(TestSuite $parentSuite): DOMElement
|
||||||
{
|
{
|
||||||
$suiteNode = $this->document->createElement('testsuite');
|
$suiteNode = $this->document->createElement('testsuite');
|
||||||
$suiteNode->setAttribute('name', $parentSuite->name);
|
$suiteNode->setAttribute('name', $parentSuite->name !== self::TESTSUITES_NAME ? $parentSuite->name : '');
|
||||||
if ($parentSuite->file !== '') {
|
if ($parentSuite->file !== '') {
|
||||||
$suiteNode->setAttribute('file', $parentSuite->file);
|
$suiteNode->setAttribute('file', $parentSuite->file);
|
||||||
}
|
}
|
||||||
|
|||||||
+12
@@ -99,6 +99,7 @@ final class Options
|
|||||||
public readonly string $runner,
|
public readonly string $runner,
|
||||||
public readonly string $tmpDir,
|
public readonly string $tmpDir,
|
||||||
public readonly bool $verbose,
|
public readonly bool $verbose,
|
||||||
|
public readonly bool $functional,
|
||||||
) {
|
) {
|
||||||
$this->needsTeamcity = $configuration->outputIsTeamCity() || $configuration->hasLogfileTeamcity();
|
$this->needsTeamcity = $configuration->outputIsTeamCity() || $configuration->hasLogfileTeamcity();
|
||||||
}
|
}
|
||||||
@@ -137,6 +138,10 @@ final class Options
|
|||||||
$verbose = $options['verbose'];
|
$verbose = $options['verbose'];
|
||||||
unset($options['verbose']);
|
unset($options['verbose']);
|
||||||
|
|
||||||
|
assert(is_bool($options['functional']));
|
||||||
|
$functional = $options['functional'];
|
||||||
|
unset($options['functional']);
|
||||||
|
|
||||||
assert(array_key_exists('colors', $options));
|
assert(array_key_exists('colors', $options));
|
||||||
if ($options['colors'] === Configuration::COLOR_DEFAULT) {
|
if ($options['colors'] === Configuration::COLOR_DEFAULT) {
|
||||||
unset($options['colors']);
|
unset($options['colors']);
|
||||||
@@ -192,6 +197,7 @@ final class Options
|
|||||||
$runner,
|
$runner,
|
||||||
$tmpDir,
|
$tmpDir,
|
||||||
$verbose,
|
$verbose,
|
||||||
|
$functional,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,6 +212,12 @@ final class Options
|
|||||||
),
|
),
|
||||||
|
|
||||||
// ParaTest options
|
// ParaTest options
|
||||||
|
new InputOption(
|
||||||
|
'functional',
|
||||||
|
null,
|
||||||
|
InputOption::VALUE_NONE,
|
||||||
|
'Whether to enable functional testing, for unit and dataset parallelization',
|
||||||
|
),
|
||||||
new InputOption(
|
new InputOption(
|
||||||
'max-batch-size',
|
'max-batch-size',
|
||||||
'm',
|
'm',
|
||||||
|
|||||||
+1
-1
@@ -80,7 +80,7 @@ final class ParaTestCommand extends Command
|
|||||||
$input,
|
$input,
|
||||||
$this->cwd,
|
$this->cwd,
|
||||||
);
|
);
|
||||||
if (! $options->configuration->hasConfigurationFile() && ! $options->configuration->hasCliArgument()) {
|
if (! $options->configuration->hasConfigurationFile() && ! $options->configuration->hasCliArguments()) {
|
||||||
return $this->displayHelp($output);
|
return $this->displayHelp($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+78
-9
@@ -11,10 +11,12 @@ use PHPUnit\Framework\TestSuite;
|
|||||||
use PHPUnit\Logging\JUnit\JunitXmlLogger;
|
use PHPUnit\Logging\JUnit\JunitXmlLogger;
|
||||||
use PHPUnit\Logging\TeamCity\TeamCityLogger;
|
use PHPUnit\Logging\TeamCity\TeamCityLogger;
|
||||||
use PHPUnit\Logging\TestDox\TestResultCollector;
|
use PHPUnit\Logging\TestDox\TestResultCollector;
|
||||||
|
use PHPUnit\Metadata\Api\CodeCoverage as CodeCoverageMetadataApi;
|
||||||
use PHPUnit\Runner\CodeCoverage;
|
use PHPUnit\Runner\CodeCoverage;
|
||||||
use PHPUnit\Runner\Extension\ExtensionBootstrapper;
|
use PHPUnit\Runner\Extension\ExtensionBootstrapper;
|
||||||
use PHPUnit\Runner\Extension\Facade as ExtensionFacade;
|
use PHPUnit\Runner\Extension\Facade as ExtensionFacade;
|
||||||
use PHPUnit\Runner\Extension\PharLoader;
|
use PHPUnit\Runner\Extension\PharLoader;
|
||||||
|
use PHPUnit\Runner\Filter\Factory;
|
||||||
use PHPUnit\Runner\TestSuiteLoader;
|
use PHPUnit\Runner\TestSuiteLoader;
|
||||||
use PHPUnit\Runner\TestSuiteSorter;
|
use PHPUnit\Runner\TestSuiteSorter;
|
||||||
use PHPUnit\TestRunner\TestResult\Facade as TestResultFacade;
|
use PHPUnit\TestRunner\TestResult\Facade as TestResultFacade;
|
||||||
@@ -23,6 +25,7 @@ use PHPUnit\TextUI\Configuration\CodeCoverageFilterRegistry;
|
|||||||
use PHPUnit\TextUI\Configuration\Configuration;
|
use PHPUnit\TextUI\Configuration\Configuration;
|
||||||
use PHPUnit\TextUI\Configuration\PhpHandler;
|
use PHPUnit\TextUI\Configuration\PhpHandler;
|
||||||
use PHPUnit\TextUI\Output\Default\ProgressPrinter\ProgressPrinter;
|
use PHPUnit\TextUI\Output\Default\ProgressPrinter\ProgressPrinter;
|
||||||
|
use PHPUnit\TextUI\Output\Default\UnexpectedOutputPrinter;
|
||||||
use PHPUnit\TextUI\Output\DefaultPrinter;
|
use PHPUnit\TextUI\Output\DefaultPrinter;
|
||||||
use PHPUnit\TextUI\Output\NullPrinter;
|
use PHPUnit\TextUI\Output\NullPrinter;
|
||||||
use PHPUnit\TextUI\Output\TestDox\ResultPrinter as TestDoxResultPrinter;
|
use PHPUnit\TextUI\Output\TestDox\ResultPrinter as TestDoxResultPrinter;
|
||||||
@@ -31,8 +34,12 @@ use PHPUnit\Util\ExcludeList;
|
|||||||
|
|
||||||
use function assert;
|
use function assert;
|
||||||
use function file_put_contents;
|
use function file_put_contents;
|
||||||
|
use function is_file;
|
||||||
use function mt_srand;
|
use function mt_srand;
|
||||||
use function serialize;
|
use function serialize;
|
||||||
|
use function str_ends_with;
|
||||||
|
use function strpos;
|
||||||
|
use function substr;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
@@ -49,29 +56,61 @@ final class ApplicationForWrapperWorker
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly array $argv,
|
private readonly array $argv,
|
||||||
private readonly string $progressFile,
|
private readonly string $progressFile,
|
||||||
|
private readonly string $unexpectedOutputFile,
|
||||||
private readonly string $testresultFile,
|
private readonly string $testresultFile,
|
||||||
private readonly ?string $teamcityFile,
|
private readonly ?string $teamcityFile,
|
||||||
private readonly ?string $testdoxFile,
|
private readonly ?string $testdoxFile,
|
||||||
private readonly bool $testdoxColor,
|
private readonly bool $testdoxColor,
|
||||||
|
private readonly ?int $testdoxColumns,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function runTest(string $testPath): int
|
public function runTest(string $testPath): int
|
||||||
{
|
{
|
||||||
|
$null = strpos($testPath, "\0");
|
||||||
|
$filter = null;
|
||||||
|
if ($null !== false) {
|
||||||
|
$filter = new Factory();
|
||||||
|
$name = substr($testPath, $null + 1);
|
||||||
|
assert($name !== '');
|
||||||
|
$filter->addNameFilter($name);
|
||||||
|
|
||||||
|
$testPath = substr($testPath, 0, $null);
|
||||||
|
}
|
||||||
|
|
||||||
$this->bootstrap();
|
$this->bootstrap();
|
||||||
|
|
||||||
|
if (is_file($testPath) && str_ends_with($testPath, '.phpt')) {
|
||||||
|
$testSuite = TestSuite::empty($testPath);
|
||||||
|
$testSuite->addTestFile($testPath);
|
||||||
|
} else {
|
||||||
$testSuiteRefl = (new TestSuiteLoader())->load($testPath);
|
$testSuiteRefl = (new TestSuiteLoader())->load($testPath);
|
||||||
$testSuite = TestSuite::fromClassReflector($testSuiteRefl);
|
$testSuite = TestSuite::fromClassReflector($testSuiteRefl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CodeCoverage::instance()->isActive()) {
|
||||||
|
CodeCoverage::instance()->ignoreLines(
|
||||||
|
(new CodeCoverageMetadataApi())->linesToBeIgnored($testSuite),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
(new TestSuiteFilterProcessor())->process($this->configuration, $testSuite);
|
(new TestSuiteFilterProcessor())->process($this->configuration, $testSuite);
|
||||||
|
|
||||||
|
if ($filter !== null) {
|
||||||
|
$testSuite->injectFilter($filter);
|
||||||
|
|
||||||
|
EventFacade::emitter()->testSuiteFiltered(
|
||||||
|
TestSuiteBuilder::from($testSuite),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
EventFacade::emitter()->testRunnerExecutionStarted(
|
EventFacade::emitter()->testRunnerExecutionStarted(
|
||||||
TestSuiteBuilder::from($testSuite),
|
TestSuiteBuilder::from($testSuite),
|
||||||
);
|
);
|
||||||
|
|
||||||
$testSuite->run();
|
$testSuite->run();
|
||||||
|
|
||||||
return TestResultFacade::result()->wasSuccessfulIgnoringPhpunitWarnings()
|
return TestResultFacade::result()->wasSuccessful()
|
||||||
? RunnerInterface::SUCCESS_EXIT
|
? RunnerInterface::SUCCESS_EXIT
|
||||||
: RunnerInterface::FAILURE_EXIT;
|
: RunnerInterface::FAILURE_EXIT;
|
||||||
}
|
}
|
||||||
@@ -95,6 +134,7 @@ final class ApplicationForWrapperWorker
|
|||||||
EventFacade::emitter()->testRunnerBootstrapFinished($bootstrapFilename);
|
EventFacade::emitter()->testRunnerBootstrapFinished($bootstrapFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$extensionRequiresCodeCoverageCollection = false;
|
||||||
if (! $this->configuration->noExtensions()) {
|
if (! $this->configuration->noExtensions()) {
|
||||||
if ($this->configuration->hasPharExtensionDirectory()) {
|
if ($this->configuration->hasPharExtensionDirectory()) {
|
||||||
(new PharLoader())->loadPharExtensionsInDirectory(
|
(new PharLoader())->loadPharExtensionsInDirectory(
|
||||||
@@ -102,9 +142,10 @@ final class ApplicationForWrapperWorker
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$extensionFacade = new ExtensionFacade();
|
||||||
$extensionBootstrapper = new ExtensionBootstrapper(
|
$extensionBootstrapper = new ExtensionBootstrapper(
|
||||||
$this->configuration,
|
$this->configuration,
|
||||||
new ExtensionFacade(),
|
$extensionFacade,
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($this->configuration->extensionBootstrappers() as $bootstrapper) {
|
foreach ($this->configuration->extensionBootstrappers() as $bootstrapper) {
|
||||||
@@ -113,30 +154,53 @@ final class ApplicationForWrapperWorker
|
|||||||
$bootstrapper['parameters'],
|
$bootstrapper['parameters'],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$extensionRequiresCodeCoverageCollection = $extensionFacade->requiresCodeCoverageCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeCoverage::instance()->init($this->configuration, CodeCoverageFilterRegistry::instance());
|
CodeCoverage::instance()->init(
|
||||||
|
$this->configuration,
|
||||||
|
CodeCoverageFilterRegistry::instance(),
|
||||||
|
$extensionRequiresCodeCoverageCollection,
|
||||||
|
);
|
||||||
|
|
||||||
if ($this->configuration->hasLogfileJunit()) {
|
if ($this->configuration->hasLogfileJunit()) {
|
||||||
new JunitXmlLogger(DefaultPrinter::from($this->configuration->logfileJunit()));
|
new JunitXmlLogger(
|
||||||
|
DefaultPrinter::from($this->configuration->logfileJunit()),
|
||||||
|
EventFacade::instance(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
new ProgressPrinter(
|
$printer = new ProgressPrinterOutput(
|
||||||
DefaultPrinter::from($this->progressFile),
|
DefaultPrinter::from($this->progressFile),
|
||||||
|
DefaultPrinter::from($this->unexpectedOutputFile),
|
||||||
|
);
|
||||||
|
|
||||||
|
new UnexpectedOutputPrinter($printer, EventFacade::instance());
|
||||||
|
new ProgressPrinter(
|
||||||
|
$printer,
|
||||||
|
EventFacade::instance(),
|
||||||
false,
|
false,
|
||||||
120,
|
99999,
|
||||||
|
$this->configuration->source(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (isset($this->teamcityFile)) {
|
if (isset($this->teamcityFile)) {
|
||||||
new TeamCityLogger(DefaultPrinter::from($this->teamcityFile));
|
new TeamCityLogger(
|
||||||
|
DefaultPrinter::from($this->teamcityFile),
|
||||||
|
EventFacade::instance(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($this->testdoxFile)) {
|
if (isset($this->testdoxFile)) {
|
||||||
$this->testdoxResultCollector = new TestResultCollector();
|
$this->testdoxResultCollector = new TestResultCollector(
|
||||||
|
EventFacade::instance(),
|
||||||
|
$this->configuration->source(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
TestResultFacade::init();
|
TestResultFacade::init();
|
||||||
EventFacade::seal();
|
EventFacade::instance()->seal();
|
||||||
EventFacade::emitter()->testRunnerStarted();
|
EventFacade::emitter()->testRunnerStarted();
|
||||||
|
|
||||||
if ($this->configuration->executionOrder() === TestSuiteSorter::ORDER_RANDOMIZED) {
|
if ($this->configuration->executionOrder() === TestSuiteSorter::ORDER_RANDOMIZED) {
|
||||||
@@ -148,6 +212,10 @@ final class ApplicationForWrapperWorker
|
|||||||
|
|
||||||
public function end(): void
|
public function end(): void
|
||||||
{
|
{
|
||||||
|
if (! $this->hasBeenBootstrapped) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
EventFacade::emitter()->testRunnerExecutionFinished();
|
EventFacade::emitter()->testRunnerExecutionFinished();
|
||||||
EventFacade::emitter()->testRunnerFinished();
|
EventFacade::emitter()->testRunnerFinished();
|
||||||
|
|
||||||
@@ -156,6 +224,7 @@ final class ApplicationForWrapperWorker
|
|||||||
$result = TestResultFacade::result();
|
$result = TestResultFacade::result();
|
||||||
if (isset($this->testdoxResultCollector)) {
|
if (isset($this->testdoxResultCollector)) {
|
||||||
assert(isset($this->testdoxFile));
|
assert(isset($this->testdoxFile));
|
||||||
|
assert(isset($this->testdoxColumns));
|
||||||
|
|
||||||
(new TestDoxResultPrinter(DefaultPrinter::from($this->testdoxFile), $this->testdoxColor))->print(
|
(new TestDoxResultPrinter(DefaultPrinter::from($this->testdoxFile), $this->testdoxColor))->print(
|
||||||
$this->testdoxResultCollector->testMethodsGroupedByClass(),
|
$this->testdoxResultCollector->testMethodsGroupedByClass(),
|
||||||
|
|||||||
+45
-25
@@ -27,7 +27,6 @@ use function fread;
|
|||||||
use function fseek;
|
use function fseek;
|
||||||
use function ftell;
|
use function ftell;
|
||||||
use function fwrite;
|
use function fwrite;
|
||||||
use function preg_replace;
|
|
||||||
use function sprintf;
|
use function sprintf;
|
||||||
use function str_repeat;
|
use function str_repeat;
|
||||||
use function strlen;
|
use function strlen;
|
||||||
@@ -46,7 +45,7 @@ final class ResultPrinter
|
|||||||
private int $totalCases = 0;
|
private int $totalCases = 0;
|
||||||
private int $column = 0;
|
private int $column = 0;
|
||||||
private int $casesProcessed = 0;
|
private int $casesProcessed = 0;
|
||||||
private int $numberOfColumns = 80;
|
private int $numberOfColumns;
|
||||||
/** @var resource|null */
|
/** @var resource|null */
|
||||||
private $teamcityLogFileHandle;
|
private $teamcityLogFileHandle;
|
||||||
/** @var array<non-empty-string, int> */
|
/** @var array<non-empty-string, int> */
|
||||||
@@ -72,6 +71,8 @@ final class ResultPrinter
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$this->numberOfColumns = $this->options->configuration->columns();
|
||||||
|
|
||||||
if (! $this->options->configuration->hasLogfileTeamcity()) {
|
if (! $this->options->configuration->hasLogfileTeamcity()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -128,11 +129,13 @@ final class ResultPrinter
|
|||||||
$output->write("\n");
|
$output->write("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param list<SplFileInfo> $teamcityFiles */
|
public function printFeedback(
|
||||||
public function printFeedback(SplFileInfo $progressFile, array $teamcityFiles): void
|
SplFileInfo $progressFile,
|
||||||
{
|
SplFileInfo $outputFile,
|
||||||
if ($this->options->needsTeamcity) {
|
SplFileInfo|null $teamcityFile
|
||||||
$teamcityProgress = $this->tailMultiple($teamcityFiles);
|
): void {
|
||||||
|
if ($this->options->needsTeamcity && $teamcityFile !== null) {
|
||||||
|
$teamcityProgress = $this->tailMultiple([$teamcityFile]);
|
||||||
|
|
||||||
if ($this->teamcityLogFileHandle !== null) {
|
if ($this->teamcityLogFileHandle !== null) {
|
||||||
fwrite($this->teamcityLogFileHandle, $teamcityProgress);
|
fwrite($this->teamcityLogFileHandle, $teamcityProgress);
|
||||||
@@ -150,14 +153,16 @@ final class ResultPrinter
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$unexpectedOutput = $this->tail($outputFile);
|
||||||
|
if ($unexpectedOutput !== '') {
|
||||||
|
$this->output->write($unexpectedOutput);
|
||||||
|
}
|
||||||
|
|
||||||
$feedbackItems = $this->tail($progressFile);
|
$feedbackItems = $this->tail($progressFile);
|
||||||
if ($feedbackItems === '') {
|
if ($feedbackItems === '') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$feedbackItems = preg_replace('/ +\\d+ \\/ \\d+ \\( *\\d+%\\)\\s*/', '', $feedbackItems);
|
|
||||||
assert($feedbackItems !== null);
|
|
||||||
|
|
||||||
$actualTestCount = strlen($feedbackItems);
|
$actualTestCount = strlen($feedbackItems);
|
||||||
for ($index = 0; $index < $actualTestCount; ++$index) {
|
for ($index = 0; $index < $actualTestCount; ++$index) {
|
||||||
$this->printFeedbackItem($feedbackItems[$index]);
|
$this->printFeedbackItem($feedbackItems[$index]);
|
||||||
@@ -188,17 +193,13 @@ final class ResultPrinter
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->options->configuration->outputIsTestDox()) {
|
$this->printer->print(PHP_EOL . (new ResourceUsageFormatter())->resourceUsageSinceStartOfRequest() . PHP_EOL . PHP_EOL);
|
||||||
$this->output->write($this->tailMultiple($testdoxFiles));
|
|
||||||
|
|
||||||
return;
|
$defaultResultPrinter = new DefaultResultPrinter(
|
||||||
}
|
|
||||||
|
|
||||||
$resultPrinter = new DefaultResultPrinter(
|
|
||||||
$this->printer,
|
$this->printer,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
true,
|
$this->options->configuration->displayDetailsOnPhpunitDeprecations(),
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
@@ -210,15 +211,34 @@ final class ResultPrinter
|
|||||||
$this->options->configuration->displayDetailsOnTestsThatTriggerWarnings(),
|
$this->options->configuration->displayDetailsOnTestsThatTriggerWarnings(),
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
$summaryPrinter = new SummaryPrinter(
|
|
||||||
|
if ($this->options->configuration->outputIsTestDox()) {
|
||||||
|
$this->output->write($this->tailMultiple($testdoxFiles));
|
||||||
|
|
||||||
|
$defaultResultPrinter = new DefaultResultPrinter(
|
||||||
|
$this->printer,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
$this->options->configuration->displayDetailsOnPhpunitDeprecations(),
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$defaultResultPrinter->print($testResult);
|
||||||
|
|
||||||
|
(new SummaryPrinter(
|
||||||
$this->printer,
|
$this->printer,
|
||||||
$this->options->configuration->colors(),
|
$this->options->configuration->colors(),
|
||||||
);
|
))->print($testResult);
|
||||||
|
|
||||||
$this->printer->print(PHP_EOL . (new ResourceUsageFormatter())->resourceUsageSinceStartOfRequest() . PHP_EOL . PHP_EOL);
|
|
||||||
|
|
||||||
$resultPrinter->print($testResult);
|
|
||||||
$summaryPrinter->print($testResult);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function printFeedbackItem(string $item): void
|
private function printFeedbackItem(string $item): void
|
||||||
@@ -249,7 +269,7 @@ final class ResultPrinter
|
|||||||
'F' => $this->colorizeTextBox('bg-red, fg-white', $item),
|
'F' => $this->colorizeTextBox('bg-red, fg-white', $item),
|
||||||
'I', 'N', 'D', 'R', 'W' => $this->colorizeTextBox('fg-yellow, bold', $item),
|
'I', 'N', 'D', 'R', 'W' => $this->colorizeTextBox('fg-yellow, bold', $item),
|
||||||
'S' => $this->colorizeTextBox('fg-cyan, bold', $item),
|
'S' => $this->colorizeTextBox('fg-cyan, bold', $item),
|
||||||
default => $item,
|
'.' => $item,
|
||||||
};
|
};
|
||||||
$this->output->write($buffer);
|
$this->output->write($buffer);
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-9
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace ParaTest\WrapperRunner;
|
namespace ParaTest\WrapperRunner;
|
||||||
|
|
||||||
|
use Generator;
|
||||||
use ParaTest\Options;
|
use ParaTest\Options;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use PHPUnit\Framework\TestSuite;
|
use PHPUnit\Framework\TestSuite;
|
||||||
@@ -23,10 +24,12 @@ use Symfony\Component\Console\Output\OutputInterface;
|
|||||||
use function array_keys;
|
use function array_keys;
|
||||||
use function assert;
|
use function assert;
|
||||||
use function count;
|
use function count;
|
||||||
|
use function is_int;
|
||||||
use function is_string;
|
use function is_string;
|
||||||
use function mt_srand;
|
use function mt_srand;
|
||||||
use function ob_get_clean;
|
use function ob_get_clean;
|
||||||
use function ob_start;
|
use function ob_start;
|
||||||
|
use function sprintf;
|
||||||
use function str_starts_with;
|
use function str_starts_with;
|
||||||
use function strlen;
|
use function strlen;
|
||||||
use function substr;
|
use function substr;
|
||||||
@@ -36,7 +39,7 @@ final class SuiteLoader
|
|||||||
{
|
{
|
||||||
public readonly int $testCount;
|
public readonly int $testCount;
|
||||||
/** @var list<non-empty-string> */
|
/** @var list<non-empty-string> */
|
||||||
public readonly array $files;
|
public readonly array $tests;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly Options $options,
|
private readonly Options $options,
|
||||||
@@ -73,8 +76,36 @@ final class SuiteLoader
|
|||||||
$this->testCount = count($testSuite);
|
$this->testCount = count($testSuite);
|
||||||
|
|
||||||
$files = [];
|
$files = [];
|
||||||
$this->loadFiles($testSuite, $files);
|
$tests = [];
|
||||||
$this->files = array_keys($files);
|
foreach ($this->loadFiles($testSuite) as $file => $test) {
|
||||||
|
$files[$file] = null;
|
||||||
|
|
||||||
|
if ($test instanceof PhptTestCase) {
|
||||||
|
$tests[] = $file;
|
||||||
|
} else {
|
||||||
|
$name = $test->name();
|
||||||
|
if ($test->providedData() !== []) {
|
||||||
|
$dataName = $test->dataName();
|
||||||
|
if ($this->options->functional) {
|
||||||
|
$name = sprintf('/%s\s.*%s.*$/', $name, $dataName);
|
||||||
|
} else {
|
||||||
|
if (is_int($dataName)) {
|
||||||
|
$name .= '#' . $dataName;
|
||||||
|
} else {
|
||||||
|
$name .= '@' . $dataName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$name = sprintf('/%s$/', $name);
|
||||||
|
}
|
||||||
|
|
||||||
|
$tests[] = "$file\0$name";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->tests = $this->options->functional
|
||||||
|
? $tests
|
||||||
|
: array_keys($files);
|
||||||
|
|
||||||
if (! $this->options->configuration->hasCoverageReport()) {
|
if (! $this->options->configuration->hasCoverageReport()) {
|
||||||
return;
|
return;
|
||||||
@@ -94,12 +125,13 @@ final class SuiteLoader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param array<non-empty-string, bool> $files */
|
/** @return Generator<non-empty-string, (PhptTestCase|TestCase)> */
|
||||||
private function loadFiles(TestSuite $testSuite, array &$files): void
|
private function loadFiles(TestSuite $testSuite): Generator
|
||||||
{
|
{
|
||||||
foreach ($testSuite as $test) {
|
foreach ($testSuite as $test) {
|
||||||
if ($test instanceof TestSuite) {
|
if ($test instanceof TestSuite) {
|
||||||
$this->loadFiles($test, $files);
|
yield from $this->loadFiles($test);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +140,8 @@ final class SuiteLoader
|
|||||||
$filename = $refProperty->getValue($test);
|
$filename = $refProperty->getValue($test);
|
||||||
assert(is_string($filename) && $filename !== '');
|
assert(is_string($filename) && $filename !== '');
|
||||||
$filename = $this->stripCwd($filename);
|
$filename = $this->stripCwd($filename);
|
||||||
$files[$filename] = true;
|
|
||||||
|
yield $filename => $test;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -116,9 +149,10 @@ final class SuiteLoader
|
|||||||
if ($test instanceof TestCase) {
|
if ($test instanceof TestCase) {
|
||||||
$refClass = new ReflectionClass($test);
|
$refClass = new ReflectionClass($test);
|
||||||
$filename = $refClass->getFileName();
|
$filename = $refClass->getFileName();
|
||||||
assert(is_string($filename) && $filename !== '');
|
assert(is_string($filename));
|
||||||
$filename = $this->stripCwd($filename);
|
$filename = $this->stripCwd($filename);
|
||||||
$files[$filename] = true;
|
|
||||||
|
yield $filename => $test;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
+35
-22
@@ -54,6 +54,8 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
/** @var list<SplFileInfo> */
|
/** @var list<SplFileInfo> */
|
||||||
private array $progressFiles = [];
|
private array $progressFiles = [];
|
||||||
/** @var list<SplFileInfo> */
|
/** @var list<SplFileInfo> */
|
||||||
|
private array $unexpectedOutputFiles = [];
|
||||||
|
/** @var list<SplFileInfo> */
|
||||||
private array $testresultFiles = [];
|
private array $testresultFiles = [];
|
||||||
/** @var list<SplFileInfo> */
|
/** @var list<SplFileInfo> */
|
||||||
private array $coverageFiles = [];
|
private array $coverageFiles = [];
|
||||||
@@ -80,8 +82,11 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
$phpFinder = new PhpExecutableFinder();
|
$phpFinder = new PhpExecutableFinder();
|
||||||
$phpBin = $phpFinder->find(false);
|
$phpBin = $phpFinder->find(false);
|
||||||
assert($phpBin !== false);
|
assert($phpBin !== false);
|
||||||
|
assert($phpBin !== '');
|
||||||
$parameters = [$phpBin];
|
$parameters = [$phpBin];
|
||||||
$parameters = array_merge($parameters, $phpFinder->findArguments());
|
/** @var array<non-empty-string> $arguments */
|
||||||
|
$arguments = $phpFinder->findArguments();
|
||||||
|
$parameters = array_merge($parameters, $arguments);
|
||||||
|
|
||||||
if ($options->passthruPhp !== null) {
|
if ($options->passthruPhp !== null) {
|
||||||
$parameters = array_merge($parameters, $options->passthruPhp);
|
$parameters = array_merge($parameters, $options->passthruPhp);
|
||||||
@@ -99,7 +104,7 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
assert($directory !== '');
|
assert($directory !== '');
|
||||||
ExcludeList::addDirectory($directory);
|
ExcludeList::addDirectory($directory);
|
||||||
TestResultFacade::init();
|
TestResultFacade::init();
|
||||||
EventFacade::seal();
|
EventFacade::instance()->seal();
|
||||||
$suiteLoader = new SuiteLoader(
|
$suiteLoader = new SuiteLoader(
|
||||||
$this->options,
|
$this->options,
|
||||||
$this->output,
|
$this->output,
|
||||||
@@ -107,7 +112,7 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
);
|
);
|
||||||
$result = TestResultFacade::result();
|
$result = TestResultFacade::result();
|
||||||
|
|
||||||
$this->pending = $suiteLoader->files;
|
$this->pending = $suiteLoader->tests;
|
||||||
$this->printer->setTestCount($suiteLoader->testCount);
|
$this->printer->setTestCount($suiteLoader->testCount);
|
||||||
$this->printer->start();
|
$this->printer->start();
|
||||||
$this->startWorkers();
|
$this->startWorkers();
|
||||||
@@ -165,7 +170,8 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
$this->exitcode = max($this->exitcode, $worker->getExitCode());
|
$this->exitcode = max($this->exitcode, $worker->getExitCode());
|
||||||
$this->printer->printFeedback(
|
$this->printer->printFeedback(
|
||||||
$worker->progressFile,
|
$worker->progressFile,
|
||||||
$this->teamcityFiles,
|
$worker->unexpectedOutputFile,
|
||||||
|
$worker->teamcityFile ?? null,
|
||||||
);
|
);
|
||||||
$worker->reset();
|
$worker->reset();
|
||||||
}
|
}
|
||||||
@@ -210,6 +216,7 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
|
|
||||||
$this->statusFiles[] = $worker->statusFile;
|
$this->statusFiles[] = $worker->statusFile;
|
||||||
$this->progressFiles[] = $worker->progressFile;
|
$this->progressFiles[] = $worker->progressFile;
|
||||||
|
$this->unexpectedOutputFiles[] = $worker->unexpectedOutputFile;
|
||||||
$this->testresultFiles[] = $worker->testresultFile;
|
$this->testresultFiles[] = $worker->testresultFile;
|
||||||
|
|
||||||
if (isset($worker->junitFile)) {
|
if (isset($worker->junitFile)) {
|
||||||
@@ -233,11 +240,11 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
|
|
||||||
private function destroyWorker(int $token): void
|
private function destroyWorker(int $token): void
|
||||||
{
|
{
|
||||||
// Mutation Testing tells us that the following `unset()` already destroys
|
|
||||||
// the `WrapperWorker`, which destroys the Symfony's `Process`, which
|
|
||||||
// automatically calls `Process::stop` within `Process::__destruct()`.
|
|
||||||
// But we prefer to have an explicit stops.
|
|
||||||
$this->workers[$token]->stop();
|
$this->workers[$token]->stop();
|
||||||
|
// We need to wait for ApplicationForWrapperWorker::end to end
|
||||||
|
while ($this->workers[$token]->isRunning()) {
|
||||||
|
usleep(self::CYCLE_SLEEP);
|
||||||
|
}
|
||||||
|
|
||||||
unset($this->workers[$token]);
|
unset($this->workers[$token]);
|
||||||
}
|
}
|
||||||
@@ -255,7 +262,7 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
assert($testResult instanceof TestResult);
|
assert($testResult instanceof TestResult);
|
||||||
|
|
||||||
$testResultSum = new TestResult(
|
$testResultSum = new TestResult(
|
||||||
$testResultSum->numberOfTests() + $testResult->numberOfTests(),
|
(int) $testResultSum->hasTests() + (int) $testResult->hasTests(),
|
||||||
$testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(),
|
$testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(),
|
||||||
$testResultSum->numberOfAssertions() + $testResult->numberOfAssertions(),
|
$testResultSum->numberOfAssertions() + $testResult->numberOfAssertions(),
|
||||||
array_merge_recursive($testResultSum->testErroredEvents(), $testResult->testErroredEvents()),
|
array_merge_recursive($testResultSum->testErroredEvents(), $testResult->testErroredEvents()),
|
||||||
@@ -264,18 +271,19 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
array_merge_recursive($testResultSum->testSuiteSkippedEvents(), $testResult->testSuiteSkippedEvents()),
|
array_merge_recursive($testResultSum->testSuiteSkippedEvents(), $testResult->testSuiteSkippedEvents()),
|
||||||
array_merge_recursive($testResultSum->testSkippedEvents(), $testResult->testSkippedEvents()),
|
array_merge_recursive($testResultSum->testSkippedEvents(), $testResult->testSkippedEvents()),
|
||||||
array_merge_recursive($testResultSum->testMarkedIncompleteEvents(), $testResult->testMarkedIncompleteEvents()),
|
array_merge_recursive($testResultSum->testMarkedIncompleteEvents(), $testResult->testMarkedIncompleteEvents()),
|
||||||
array_merge_recursive($testResultSum->testTriggeredDeprecationEvents(), $testResult->testTriggeredDeprecationEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredPhpDeprecationEvents(), $testResult->testTriggeredPhpDeprecationEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredPhpunitDeprecationEvents(), $testResult->testTriggeredPhpunitDeprecationEvents()),
|
array_merge_recursive($testResultSum->testTriggeredPhpunitDeprecationEvents(), $testResult->testTriggeredPhpunitDeprecationEvents()),
|
||||||
array_merge_recursive($testResultSum->testTriggeredErrorEvents(), $testResult->testTriggeredErrorEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredNoticeEvents(), $testResult->testTriggeredNoticeEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredPhpNoticeEvents(), $testResult->testTriggeredPhpNoticeEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredWarningEvents(), $testResult->testTriggeredWarningEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredPhpWarningEvents(), $testResult->testTriggeredPhpWarningEvents()),
|
|
||||||
array_merge_recursive($testResultSum->testTriggeredPhpunitErrorEvents(), $testResult->testTriggeredPhpunitErrorEvents()),
|
array_merge_recursive($testResultSum->testTriggeredPhpunitErrorEvents(), $testResult->testTriggeredPhpunitErrorEvents()),
|
||||||
array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()),
|
array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()),
|
||||||
array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()),
|
array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()),
|
||||||
array_merge_recursive($testResultSum->testRunnerTriggeredWarningEvents(), $testResult->testRunnerTriggeredWarningEvents()),
|
array_merge_recursive($testResultSum->testRunnerTriggeredWarningEvents(), $testResult->testRunnerTriggeredWarningEvents()),
|
||||||
|
array_merge_recursive($testResultSum->errors(), $testResult->errors()),
|
||||||
|
array_merge_recursive($testResultSum->deprecations(), $testResult->deprecations()),
|
||||||
|
array_merge_recursive($testResultSum->notices(), $testResult->notices()),
|
||||||
|
array_merge_recursive($testResultSum->warnings(), $testResult->warnings()),
|
||||||
|
array_merge_recursive($testResultSum->phpDeprecations(), $testResult->phpDeprecations()),
|
||||||
|
array_merge_recursive($testResultSum->phpNotices(), $testResult->phpNotices()),
|
||||||
|
array_merge_recursive($testResultSum->phpWarnings(), $testResult->phpWarnings()),
|
||||||
|
$testResultSum->numberOfIssuesIgnoredByBaseline() + $testResult->numberOfIssuesIgnoredByBaseline(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,16 +296,13 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
$this->generateLogs();
|
$this->generateLogs();
|
||||||
|
|
||||||
$exitcode = (new ShellExitCodeCalculator())->calculate(
|
$exitcode = (new ShellExitCodeCalculator())->calculate(
|
||||||
$this->options->configuration->failOnEmptyTestSuite(),
|
$this->options->configuration,
|
||||||
$this->options->configuration->failOnRisky(),
|
|
||||||
$this->options->configuration->failOnWarning(),
|
|
||||||
$this->options->configuration->failOnIncomplete(),
|
|
||||||
$this->options->configuration->failOnSkipped(),
|
|
||||||
$testResultSum,
|
$testResultSum,
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->clearFiles($this->statusFiles);
|
$this->clearFiles($this->statusFiles);
|
||||||
$this->clearFiles($this->progressFiles);
|
$this->clearFiles($this->progressFiles);
|
||||||
|
$this->clearFiles($this->unexpectedOutputFiles);
|
||||||
$this->clearFiles($this->testresultFiles);
|
$this->clearFiles($this->testresultFiles);
|
||||||
$this->clearFiles($this->coverageFiles);
|
$this->clearFiles($this->coverageFiles);
|
||||||
$this->clearFiles($this->junitFiles);
|
$this->clearFiles($this->junitFiles);
|
||||||
@@ -314,7 +319,11 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
$coverageManager = new CodeCoverage();
|
$coverageManager = new CodeCoverage();
|
||||||
$coverageManager->init($this->options->configuration, $this->codeCoverageFilterRegistry);
|
$coverageManager->init(
|
||||||
|
$this->options->configuration,
|
||||||
|
$this->codeCoverageFilterRegistry,
|
||||||
|
false,
|
||||||
|
);
|
||||||
$coverageMerger = new CoverageMerger($coverageManager->codeCoverage());
|
$coverageMerger = new CoverageMerger($coverageManager->codeCoverage());
|
||||||
foreach ($this->coverageFiles as $coverageFile) {
|
foreach ($this->coverageFiles as $coverageFile) {
|
||||||
$coverageMerger->addCoverageFromFile($coverageFile);
|
$coverageMerger->addCoverageFromFile($coverageFile);
|
||||||
@@ -333,6 +342,10 @@ final class WrapperRunner implements RunnerInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
$testSuite = (new LogMerger())->merge($this->junitFiles);
|
$testSuite = (new LogMerger())->merge($this->junitFiles);
|
||||||
|
if ($testSuite === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
(new Writer())->write(
|
(new Writer())->write(
|
||||||
$testSuite,
|
$testSuite,
|
||||||
$this->options->configuration->logfileJunit(),
|
$this->options->configuration->logfileJunit(),
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ final class WrapperWorker
|
|||||||
|
|
||||||
public readonly SplFileInfo $statusFile;
|
public readonly SplFileInfo $statusFile;
|
||||||
public readonly SplFileInfo $progressFile;
|
public readonly SplFileInfo $progressFile;
|
||||||
|
public readonly SplFileInfo $unexpectedOutputFile;
|
||||||
public readonly SplFileInfo $testresultFile;
|
public readonly SplFileInfo $testresultFile;
|
||||||
public readonly SplFileInfo $junitFile;
|
public readonly SplFileInfo $junitFile;
|
||||||
public readonly SplFileInfo $coverageFile;
|
public readonly SplFileInfo $coverageFile;
|
||||||
@@ -62,6 +63,8 @@ final class WrapperWorker
|
|||||||
touch($this->statusFile->getPathname());
|
touch($this->statusFile->getPathname());
|
||||||
$this->progressFile = new SplFileInfo($commonTmpFilePath . 'progress');
|
$this->progressFile = new SplFileInfo($commonTmpFilePath . 'progress');
|
||||||
touch($this->progressFile->getPathname());
|
touch($this->progressFile->getPathname());
|
||||||
|
$this->unexpectedOutputFile = new SplFileInfo($commonTmpFilePath . 'unexpected_output');
|
||||||
|
touch($this->unexpectedOutputFile->getPathname());
|
||||||
$this->testresultFile = new SplFileInfo($commonTmpFilePath . 'testresult');
|
$this->testresultFile = new SplFileInfo($commonTmpFilePath . 'testresult');
|
||||||
if ($options->configuration->hasLogfileJunit()) {
|
if ($options->configuration->hasLogfileJunit()) {
|
||||||
$this->junitFile = new SplFileInfo($commonTmpFilePath . 'junit');
|
$this->junitFile = new SplFileInfo($commonTmpFilePath . 'junit');
|
||||||
@@ -83,6 +86,8 @@ final class WrapperWorker
|
|||||||
$parameters[] = $this->statusFile->getPathname();
|
$parameters[] = $this->statusFile->getPathname();
|
||||||
$parameters[] = '--progress-file';
|
$parameters[] = '--progress-file';
|
||||||
$parameters[] = $this->progressFile->getPathname();
|
$parameters[] = $this->progressFile->getPathname();
|
||||||
|
$parameters[] = '--unexpected-output-file';
|
||||||
|
$parameters[] = $this->unexpectedOutputFile->getPathname();
|
||||||
$parameters[] = '--testresult-file';
|
$parameters[] = '--testresult-file';
|
||||||
$parameters[] = $this->testresultFile->getPathname();
|
$parameters[] = $this->testresultFile->getPathname();
|
||||||
if (isset($this->teamcityFile)) {
|
if (isset($this->teamcityFile)) {
|
||||||
@@ -96,10 +101,17 @@ final class WrapperWorker
|
|||||||
if ($options->configuration->colors()) {
|
if ($options->configuration->colors()) {
|
||||||
$parameters[] = '--testdox-color';
|
$parameters[] = '--testdox-color';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parameters[] = '--testdox-columns';
|
||||||
|
$parameters[] = (string) $options->configuration->columns();
|
||||||
}
|
}
|
||||||
|
|
||||||
$phpunitArguments = [$options->phpunit];
|
$phpunitArguments = [$options->phpunit];
|
||||||
foreach ($options->phpunitOptions as $key => $value) {
|
foreach ($options->phpunitOptions as $key => $value) {
|
||||||
|
if ($options->functional && $key === 'filter') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$phpunitArguments[] = "--{$key}";
|
$phpunitArguments[] = "--{$key}";
|
||||||
if ($value === true) {
|
if ($value === true) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
+224
-108
@@ -535,6 +535,7 @@ return array(
|
|||||||
'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php',
|
'DeepCopy\\Matcher\\PropertyTypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php',
|
||||||
'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php',
|
'DeepCopy\\Reflection\\ReflectionHelper' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php',
|
||||||
'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php',
|
'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php',
|
||||||
|
'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php',
|
||||||
'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php',
|
'DeepCopy\\TypeFilter\\ReplaceFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php',
|
||||||
'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php',
|
'DeepCopy\\TypeFilter\\ShallowCopyFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php',
|
||||||
'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php',
|
'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php',
|
||||||
@@ -1571,9 +1572,12 @@ return array(
|
|||||||
'Fidry\\CpuCoreCounter\\Diagnoser' => $vendorDir . '/fidry/cpu-core-counter/src/Diagnoser.php',
|
'Fidry\\CpuCoreCounter\\Diagnoser' => $vendorDir . '/fidry/cpu-core-counter/src/Diagnoser.php',
|
||||||
'Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
|
'Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
|
||||||
'Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
|
'Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => $vendorDir . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
|
'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
|
||||||
@@ -1582,13 +1586,16 @@ return array(
|
|||||||
'Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
|
'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\ParallelisationResult' => $vendorDir . '/fidry/cpu-core-counter/src/ParallelisationResult.php',
|
||||||
'Fruitcake\\Cors\\CorsService' => $vendorDir . '/fruitcake/php-cors/src/CorsService.php',
|
'Fruitcake\\Cors\\CorsService' => $vendorDir . '/fruitcake/php-cors/src/CorsService.php',
|
||||||
'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => $vendorDir . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php',
|
'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => $vendorDir . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php',
|
||||||
'GrahamCampbell\\ResultType\\Error' => $vendorDir . '/graham-campbell/result-type/src/Error.php',
|
'GrahamCampbell\\ResultType\\Error' => $vendorDir . '/graham-campbell/result-type/src/Error.php',
|
||||||
@@ -3829,6 +3836,7 @@ return array(
|
|||||||
'Nette\\Schema\\Processor' => $vendorDir . '/nette/schema/src/Schema/Processor.php',
|
'Nette\\Schema\\Processor' => $vendorDir . '/nette/schema/src/Schema/Processor.php',
|
||||||
'Nette\\Schema\\Schema' => $vendorDir . '/nette/schema/src/Schema/Schema.php',
|
'Nette\\Schema\\Schema' => $vendorDir . '/nette/schema/src/Schema/Schema.php',
|
||||||
'Nette\\Schema\\ValidationException' => $vendorDir . '/nette/schema/src/Schema/ValidationException.php',
|
'Nette\\Schema\\ValidationException' => $vendorDir . '/nette/schema/src/Schema/ValidationException.php',
|
||||||
|
'Nette\\ShouldNotHappenException' => $vendorDir . '/nette/utils/src/exceptions.php',
|
||||||
'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php',
|
'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php',
|
||||||
'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php',
|
'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php',
|
||||||
'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php',
|
'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php',
|
||||||
@@ -3838,6 +3846,7 @@ return array(
|
|||||||
'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
|
'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
|
||||||
'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
|
'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
|
||||||
|
'Nette\\Utils\\DateTimeImmutable' => $vendorDir . '/nette/utils/src/Utils/DateTimeImmutable.php',
|
||||||
'Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php',
|
'Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php',
|
||||||
'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
|
'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
|
||||||
'Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php',
|
'Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php',
|
||||||
@@ -3846,13 +3855,20 @@ return array(
|
|||||||
'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
|
'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
|
||||||
'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php',
|
'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php',
|
||||||
'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
|
'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
|
||||||
|
'Nette\\Utils\\ImageColor' => $vendorDir . '/nette/utils/src/Utils/ImageColor.php',
|
||||||
'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||||
|
'Nette\\Utils\\ImageType' => $vendorDir . '/nette/utils/src/Utils/ImageType.php',
|
||||||
|
'Nette\\Utils\\Iterables' => $vendorDir . '/nette/utils/src/Utils/Iterables.php',
|
||||||
'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
|
'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
|
||||||
'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
|
'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
|
||||||
'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
|
'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
|
||||||
|
'Nette\\Utils\\Process' => $vendorDir . '/nette/utils/src/Utils/Process.php',
|
||||||
|
'Nette\\Utils\\ProcessFailedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||||
|
'Nette\\Utils\\ProcessTimeoutException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
|
'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
|
||||||
'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
|
'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
|
||||||
|
'Nette\\Utils\\ReflectionMethod' => $vendorDir . '/nette/utils/src/Utils/ReflectionMethod.php',
|
||||||
'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
|
'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
|
||||||
'Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php',
|
'Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php',
|
||||||
@@ -3904,6 +3920,7 @@ return array(
|
|||||||
'PHPUnit\\Event\\Code\\ClassMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ClassMethod.php',
|
'PHPUnit\\Event\\Code\\ClassMethod' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ClassMethod.php',
|
||||||
'PHPUnit\\Event\\Code\\ComparisonFailure' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php',
|
'PHPUnit\\Event\\Code\\ComparisonFailure' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php',
|
||||||
'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php',
|
'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => $vendorDir . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php',
|
||||||
|
'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php',
|
||||||
'PHPUnit\\Event\\Code\\Phpt' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php',
|
'PHPUnit\\Event\\Code\\Phpt' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php',
|
||||||
'PHPUnit\\Event\\Code\\Test' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Test.php',
|
'PHPUnit\\Event\\Code\\Test' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/Test.php',
|
||||||
'PHPUnit\\Event\\Code\\TestCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php',
|
'PHPUnit\\Event\\Code\\TestCollection' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php',
|
||||||
@@ -3941,10 +3958,14 @@ return array(
|
|||||||
'PHPUnit\\Event\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Subscriber.php',
|
'PHPUnit\\Event\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Subscriber.php',
|
||||||
'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php',
|
'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\Duration' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php',
|
'PHPUnit\\Event\\Telemetry\\Duration' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatus' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatus.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\HRTime' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php',
|
'PHPUnit\\Event\\Telemetry\\HRTime' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\Info' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php',
|
'PHPUnit\\Event\\Telemetry\\Info' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\MemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php',
|
'PHPUnit\\Event\\Telemetry\\MemoryMeter' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\MemoryUsage' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php',
|
'PHPUnit\\Event\\Telemetry\\MemoryUsage' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\Snapshot' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php',
|
'PHPUnit\\Event\\Telemetry\\Snapshot' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\StopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php',
|
'PHPUnit\\Event\\Telemetry\\StopWatch' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\System' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php',
|
'PHPUnit\\Event\\Telemetry\\System' => $vendorDir . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php',
|
||||||
@@ -3966,6 +3987,8 @@ return array(
|
|||||||
'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php',
|
'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\ExecutionAborted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAborted.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\ExecutionAbortedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAbortedSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php',
|
'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php',
|
'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php',
|
||||||
@@ -3976,6 +3999,12 @@ return array(
|
|||||||
'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php',
|
'PHPUnit\\Event\\TestRunner\\Finished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabled.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabled.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggered.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php',
|
'PHPUnit\\Event\\TestRunner\\Started' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\WarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php',
|
'PHPUnit\\Event\\TestRunner\\WarningTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php',
|
||||||
@@ -3999,10 +4028,14 @@ return array(
|
|||||||
'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php',
|
'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => $vendorDir . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AssertionFailed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php',
|
'PHPUnit\\Event\\Test\\AssertionFailed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php',
|
||||||
@@ -4017,12 +4050,18 @@ return array(
|
|||||||
'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\BeforeTestMethodErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\BeforeTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\ComparatorRegistered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php',
|
'PHPUnit\\Event\\Test\\ComparatorRegistered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php',
|
||||||
'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php',
|
'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\ConsideredRisky' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php',
|
'PHPUnit\\Event\\Test\\ConsideredRisky' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php',
|
||||||
'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php',
|
'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php',
|
'PHPUnit\\Event\\Test\\DeprecationTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php',
|
||||||
'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php',
|
'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\ErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php',
|
'PHPUnit\\Event\\Test\\ErrorTriggered' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php',
|
||||||
@@ -4066,12 +4105,18 @@ return array(
|
|||||||
'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php',
|
'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php',
|
'PHPUnit\\Event\\Test\\PostConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PostConditionErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PostConditionErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php',
|
'PHPUnit\\Event\\Test\\PostConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php',
|
'PHPUnit\\Event\\Test\\PreConditionCalled' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreConditionErrored' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreConditionErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php',
|
'PHPUnit\\Event\\Test\\PreConditionFinished' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreparationFailed' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailed.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreparationFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PreparationStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php',
|
'PHPUnit\\Event\\Test\\PreparationStarted' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php',
|
||||||
'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php',
|
'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\Prepared' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php',
|
'PHPUnit\\Event\\Test\\Prepared' => $vendorDir . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php',
|
||||||
@@ -4123,6 +4168,10 @@ return array(
|
|||||||
'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php',
|
'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php',
|
'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\Group' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Group.php',
|
'PHPUnit\\Framework\\Attributes\\Group' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Group.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreClassForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreClassForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreDeprecations.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreFunctionForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreFunctionForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreMethodForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/IgnoreMethodForCodeCoverage.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\Large' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Large.php',
|
'PHPUnit\\Framework\\Attributes\\Large' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Large.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\Medium' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Medium.php',
|
'PHPUnit\\Framework\\Attributes\\Medium' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Medium.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php',
|
'PHPUnit\\Framework\\Attributes\\PostCondition' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php',
|
||||||
@@ -4147,6 +4196,7 @@ return array(
|
|||||||
'PHPUnit\\Framework\\Attributes\\Ticket' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php',
|
'PHPUnit\\Framework\\Attributes\\Ticket' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php',
|
'PHPUnit\\Framework\\Attributes\\UsesClass' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php',
|
'PHPUnit\\Framework\\Attributes\\UsesFunction' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php',
|
||||||
'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
|
'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
|
||||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php',
|
'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php',
|
||||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
|
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
|
||||||
@@ -4190,7 +4240,8 @@ return array(
|
|||||||
'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
|
'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
|
'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
|
'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectEquals.php',
|
'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
|
||||||
|
'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
|
'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
|
'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
|
'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
|
||||||
@@ -4206,7 +4257,6 @@ return array(
|
|||||||
'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
|
'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
|
||||||
'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
||||||
'PHPUnit\\Framework\\EmptyStringException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php',
|
'PHPUnit\\Framework\\EmptyStringException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php',
|
||||||
'PHPUnit\\Framework\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Error.php',
|
|
||||||
'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
|
'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
|
||||||
'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
|
'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
|
||||||
'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
|
'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
|
||||||
@@ -4217,77 +4267,83 @@ return array(
|
|||||||
'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
|
'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
|
||||||
'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
|
'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
|
||||||
'PHPUnit\\Framework\\InvalidDependencyException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php',
|
'PHPUnit\\Framework\\InvalidDependencyException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Api' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationMocker.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationStubber.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
|
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassIsEnumerationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsEnumerationException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassIsReadonlyException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
|
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
|
'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
|
'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
|
'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsReadonlyException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
|
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
|
'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
|
'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
|
'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
|
'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
|
'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
|
'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
|
'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
|
'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
|
'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
|
'PHPUnit\\Framework\\MockObject\\MockObjectApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
|
'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
|
'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
|
'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
|
'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php',
|
'PHPUnit\\Framework\\MockObject\\ReturnValueGenerator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/ParametersRule.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
|
'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
|
'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/Stub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
|
'PHPUnit\\Framework\\MockObject\\StubApi' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
'PHPUnit\\Framework\\MockObject\\StubInternal' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\TemplateLoader' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/TemplateLoader.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\UnmockedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
|
|
||||||
'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
|
'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
|
||||||
'PHPUnit\\Framework\\PhptAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php',
|
'PHPUnit\\Framework\\PhptAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php',
|
||||||
'PHPUnit\\Framework\\ProcessIsolationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php',
|
'PHPUnit\\Framework\\ProcessIsolationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php',
|
||||||
@@ -4320,18 +4376,19 @@ return array(
|
|||||||
'PHPUnit\\Framework\\TestStatus\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php',
|
'PHPUnit\\Framework\\TestStatus\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php',
|
||||||
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||||
'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
||||||
'PHPUnit\\Framework\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassException.php',
|
|
||||||
'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php',
|
'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php',
|
||||||
'PHPUnit\\Framework\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php',
|
'PHPUnit\\Framework\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php',
|
||||||
'PHPUnit\\Logging\\EventLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/EventLogger.php',
|
'PHPUnit\\Logging\\EventLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/EventLogger.php',
|
||||||
'PHPUnit\\Logging\\Exception' => $vendorDir . '/phpunit/phpunit/src/Logging/Exception.php',
|
|
||||||
'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php',
|
'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php',
|
'PHPUnit\\Logging\\JUnit\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\JUnit\\TestPreparationFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\JUnit\\TestPreparationStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\JUnit\\TestPrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPrintedUnexpectedOutputSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php',
|
||||||
@@ -4346,31 +4403,35 @@ return array(
|
|||||||
'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteBeforeFirstTestMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteBeforeFirstTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteSkippedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php',
|
'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php',
|
'PHPUnit\\Logging\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php',
|
'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/Subscriber.php',
|
'PHPUnit\\Logging\\TestDox\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestConsideredRiskySubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectForAbstractClassSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectForAbstractClassSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectForTraitSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectForTraitSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectFromWsdlSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectFromWsdlSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedPartialMockObjectSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedPartialMockObjectSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedTestProxySubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedTestProxySubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedTestStubSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedTestStubSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestErroredSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResultCollection' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestFailedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestFinishedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResultCollector' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestMarkedIncompleteSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestPassedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResult.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResultCollection' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollection.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollectionIterator.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResultCollector' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollector.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
'PHPUnit\\Metadata\\After' => $vendorDir . '/phpunit/phpunit/src/Metadata/After.php',
|
'PHPUnit\\Metadata\\After' => $vendorDir . '/phpunit/phpunit/src/Metadata/After.php',
|
||||||
'PHPUnit\\Metadata\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/AfterClass.php',
|
'PHPUnit\\Metadata\\AfterClass' => $vendorDir . '/phpunit/phpunit/src/Metadata/AfterClass.php',
|
||||||
'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php',
|
'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php',
|
||||||
@@ -4399,6 +4460,11 @@ return array(
|
|||||||
'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php',
|
'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php',
|
||||||
'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php',
|
'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => $vendorDir . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php',
|
||||||
'PHPUnit\\Metadata\\Group' => $vendorDir . '/phpunit/phpunit/src/Metadata/Group.php',
|
'PHPUnit\\Metadata\\Group' => $vendorDir . '/phpunit/phpunit/src/Metadata/Group.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreClassForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreClassForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreDeprecations' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreFunctionForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreFunctionForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreMethodForCodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Metadata/IgnoreMethodForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Metadata\\InvalidAttributeException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php',
|
||||||
'PHPUnit\\Metadata\\InvalidVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php',
|
'PHPUnit\\Metadata\\InvalidVersionRequirementException' => $vendorDir . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php',
|
||||||
'PHPUnit\\Metadata\\Metadata' => $vendorDir . '/phpunit/phpunit/src/Metadata/Metadata.php',
|
'PHPUnit\\Metadata\\Metadata' => $vendorDir . '/phpunit/phpunit/src/Metadata/Metadata.php',
|
||||||
'PHPUnit\\Metadata\\MetadataCollection' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollection.php',
|
'PHPUnit\\Metadata\\MetadataCollection' => $vendorDir . '/phpunit/phpunit/src/Metadata/MetadataCollection.php',
|
||||||
@@ -4435,13 +4501,30 @@ return array(
|
|||||||
'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php',
|
'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php',
|
||||||
'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php',
|
'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php',
|
||||||
'PHPUnit\\Metadata\\Version\\Requirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/Requirement.php',
|
'PHPUnit\\Metadata\\Version\\Requirement' => $vendorDir . '/phpunit/phpunit/src/Metadata/Version/Requirement.php',
|
||||||
|
'PHPUnit\\Metadata\\WithoutErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Baseline' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Baseline.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\CannotLoadBaselineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\FileDoesNotHaveLineException' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Generator' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Generator.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Issue' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Issue.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Reader' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Reader.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\RelativePathCalculator' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Writer' => $vendorDir . '/phpunit/phpunit/src/Runner/Baseline/Writer.php',
|
||||||
'PHPUnit\\Runner\\ClassCannotBeFoundException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php',
|
'PHPUnit\\Runner\\ClassCannotBeFoundException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php',
|
||||||
'PHPUnit\\Runner\\ClassCannotBeInstantiatedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeInstantiatedException.php',
|
'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php',
|
||||||
'PHPUnit\\Runner\\ClassDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExistException.php',
|
|
||||||
'PHPUnit\\Runner\\ClassDoesNotImplementExtensionInterfaceException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotImplementExtensionInterfaceException.php',
|
|
||||||
'PHPUnit\\Runner\\ClassIsAbstractException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php',
|
'PHPUnit\\Runner\\ClassIsAbstractException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php',
|
||||||
'PHPUnit\\Runner\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Runner/CodeCoverage.php',
|
'PHPUnit\\Runner\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/Runner/CodeCoverage.php',
|
||||||
'PHPUnit\\Runner\\DirectoryCannotBeCreatedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php',
|
'PHPUnit\\Runner\\CodeCoverageFileExistsException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php',
|
||||||
|
'PHPUnit\\Runner\\DirectoryDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php',
|
||||||
|
'PHPUnit\\Runner\\ErrorException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ErrorException.php',
|
||||||
|
'PHPUnit\\Runner\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/ErrorHandler.php',
|
||||||
'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/Exception.php',
|
'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/Exception.php',
|
||||||
'PHPUnit\\Runner\\Extension\\Extension' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/Extension.php',
|
'PHPUnit\\Runner\\Extension\\Extension' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/Extension.php',
|
||||||
'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php',
|
'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php',
|
||||||
@@ -4454,13 +4537,17 @@ return array(
|
|||||||
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
||||||
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
||||||
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
||||||
|
'PHPUnit\\Runner\\Filter\\TestIdFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\ExecutionFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\GarbageCollectionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\Runner\\InvalidOrderException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php',
|
'PHPUnit\\Runner\\InvalidOrderException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php',
|
||||||
'PHPUnit\\Runner\\InvalidPhptFileException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php',
|
'PHPUnit\\Runner\\InvalidPhptFileException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php',
|
||||||
'PHPUnit\\Runner\\NoIgnoredEventException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/NoIgnoredEventException.php',
|
|
||||||
'PHPUnit\\Runner\\ParameterDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php',
|
'PHPUnit\\Runner\\ParameterDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php',
|
||||||
'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php',
|
'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php',
|
||||||
'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
||||||
'PHPUnit\\Runner\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/ReflectionException.php',
|
|
||||||
'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php',
|
'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php',
|
||||||
'PHPUnit\\Runner\\ResultCache\\NullResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php',
|
'PHPUnit\\Runner\\ResultCache\\NullResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php',
|
||||||
'PHPUnit\\Runner\\ResultCache\\ResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php',
|
'PHPUnit\\Runner\\ResultCache\\ResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php',
|
||||||
@@ -4479,10 +4566,12 @@ return array(
|
|||||||
'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
|
'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
|
||||||
'PHPUnit\\Runner\\UnsupportedPhptSectionException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php',
|
'PHPUnit\\Runner\\UnsupportedPhptSectionException' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php',
|
||||||
'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
|
||||||
|
'PHPUnit\\TestRunner\\TestResult\\AfterTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\Collector' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Collector.php',
|
'PHPUnit\\TestRunner\\TestResult\\Collector' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Collector.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Facade.php',
|
'PHPUnit\\TestRunner\\TestResult\\Facade' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Facade.php',
|
||||||
|
'PHPUnit\\TestRunner\\TestResult\\Issues\\Issue' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Issue.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\PassedTests' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php',
|
'PHPUnit\\TestRunner\\TestResult\\PassedTests' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\Subscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php',
|
||||||
@@ -4509,11 +4598,13 @@ return array(
|
|||||||
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Application' => $vendorDir . '/phpunit/phpunit/src/TextUI/Application.php',
|
'PHPUnit\\TextUI\\Application' => $vendorDir . '/phpunit/phpunit/src/TextUI/Application.php',
|
||||||
|
'PHPUnit\\TextUI\\CannotOpenSocketException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php',
|
'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php',
|
'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php',
|
'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php',
|
'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php',
|
||||||
'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php',
|
'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php',
|
||||||
|
'PHPUnit\\TextUI\\Command\\CheckPhpConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php',
|
||||||
'PHPUnit\\TextUI\\Command\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Command.php',
|
'PHPUnit\\TextUI\\Command\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Command.php',
|
||||||
'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php',
|
'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php',
|
||||||
'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php',
|
'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php',
|
||||||
@@ -4551,12 +4642,12 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\Configuration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php',
|
'PHPUnit\\TextUI\\Configuration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\IncludePathNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/IncludePathNotConfiguredException.php',
|
|
||||||
'PHPUnit\\TextUI\\Configuration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php',
|
'PHPUnit\\TextUI\\Configuration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php',
|
'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\Merger' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php',
|
'PHPUnit\\TextUI\\Configuration\\Merger' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\NoBaselineException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php',
|
'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php',
|
'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\NoCliArgumentException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php',
|
'PHPUnit\\TextUI\\Configuration\\NoCliArgumentException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php',
|
||||||
@@ -4568,6 +4659,9 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\Configuration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php',
|
'PHPUnit\\TextUI\\Configuration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php',
|
'PHPUnit\\TextUI\\Configuration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\Registry' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php',
|
'PHPUnit\\TextUI\\Configuration\\Registry' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\Source' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\SourceFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\SourceMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php',
|
'PHPUnit\\TextUI\\Configuration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php',
|
||||||
@@ -4582,8 +4676,8 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\Configuration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php',
|
||||||
'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
|
'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
|
||||||
'PHPUnit\\TextUI\\ExtensionsNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/ExtensionsNotConfiguredException.php',
|
|
||||||
'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php',
|
'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php',
|
||||||
|
'PHPUnit\\TextUI\\InvalidSocketException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php',
|
||||||
'PHPUnit\\TextUI\\Output\\DefaultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php',
|
'PHPUnit\\TextUI\\Output\\DefaultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php',
|
||||||
@@ -4594,10 +4688,10 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPrintedUnexpectedOutputSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPrintedUnexpectedOutputSubscriber.php',
|
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
||||||
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
||||||
@@ -4606,18 +4700,19 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php',
|
||||||
|
'PHPUnit\\TextUI\\Output\\Default\\UnexpectedOutputPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Facade' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Facade.php',
|
'PHPUnit\\TextUI\\Output\\Facade' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Facade.php',
|
||||||
'PHPUnit\\TextUI\\Output\\NullPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php',
|
'PHPUnit\\TextUI\\Output\\NullPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Printer' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php',
|
'PHPUnit\\TextUI\\Output\\Printer' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php',
|
||||||
'PHPUnit\\TextUI\\Output\\SummaryPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php',
|
'PHPUnit\\TextUI\\Output\\SummaryPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php',
|
'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php',
|
||||||
'PHPUnit\\TextUI\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
|
|
||||||
'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
|
'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
|
||||||
'PHPUnit\\TextUI\\ShellExitCodeCalculator' => $vendorDir . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php',
|
'PHPUnit\\TextUI\\ShellExitCodeCalculator' => $vendorDir . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php',
|
||||||
'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
|
'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
|
||||||
'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
|
'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
|
||||||
'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||||
'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php',
|
'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\CannotFindSchemaException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php',
|
||||||
@@ -4636,6 +4731,7 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php',
|
||||||
@@ -4650,13 +4746,13 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilderException.php',
|
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveCoverageDirectoriesToSource' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php',
|
||||||
@@ -4677,42 +4773,38 @@ return array(
|
|||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => $vendorDir . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php',
|
||||||
'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php',
|
'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php',
|
||||||
'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
|
'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
|
||||||
'PHPUnit\\Util\\DirectoryDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/DirectoryDoesNotExistException.php',
|
|
||||||
'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
|
||||||
'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/Exception.php',
|
'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/Exception.php',
|
||||||
'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php',
|
'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php',
|
||||||
|
'PHPUnit\\Util\\Exporter' => $vendorDir . '/phpunit/phpunit/src/Util/Exporter.php',
|
||||||
'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||||
'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
|
||||||
'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||||
|
'PHPUnit\\Util\\Http\\Downloader' => $vendorDir . '/phpunit/phpunit/src/Util/Http/Downloader.php',
|
||||||
|
'PHPUnit\\Util\\Http\\PhpDownloader' => $vendorDir . '/phpunit/phpunit/src/Util/Http/PhpDownloader.php',
|
||||||
'PHPUnit\\Util\\InvalidDirectoryException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php',
|
'PHPUnit\\Util\\InvalidDirectoryException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php',
|
||||||
'PHPUnit\\Util\\InvalidJsonException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php',
|
'PHPUnit\\Util\\InvalidJsonException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php',
|
||||||
'PHPUnit\\Util\\InvalidSocketException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidSocketException.php',
|
|
||||||
'PHPUnit\\Util\\InvalidVersionOperatorException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php',
|
'PHPUnit\\Util\\InvalidVersionOperatorException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php',
|
||||||
'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
|
'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
|
||||||
'PHPUnit\\Util\\NoTestCaseObjectOnCallStackException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/NoTestCaseObjectOnCallStackException.php',
|
|
||||||
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
||||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||||
'PHPUnit\\Util\\PHP\\PhpProcessException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php',
|
'PHPUnit\\Util\\PHP\\PhpProcessException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php',
|
||||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
|
||||||
'PHPUnit\\Util\\Reflection' => $vendorDir . '/phpunit/phpunit/src/Util/Reflection.php',
|
'PHPUnit\\Util\\Reflection' => $vendorDir . '/phpunit/phpunit/src/Util/Reflection.php',
|
||||||
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
||||||
'PHPUnit\\Util\\ThrowableToStringMapper' => $vendorDir . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php',
|
'PHPUnit\\Util\\ThrowableToStringMapper' => $vendorDir . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php',
|
||||||
'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
|
'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
|
||||||
'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
|
'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Xml.php',
|
||||||
'PHPUnit\\Util\\Xml\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Exception.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php',
|
'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php',
|
||||||
'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\Validator' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Validator.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\XmlException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/XmlException.php',
|
'PHPUnit\\Util\\Xml\\XmlException' => $vendorDir . '/phpunit/phpunit/src/Util/Exception/XmlException.php',
|
||||||
'ParaTest\\Coverage\\CoverageMerger' => $vendorDir . '/brianium/paratest/src/Coverage/CoverageMerger.php',
|
'ParaTest\\Coverage\\CoverageMerger' => $vendorDir . '/brianium/paratest/src/Coverage/CoverageMerger.php',
|
||||||
'ParaTest\\JUnit\\LogMerger' => $vendorDir . '/brianium/paratest/src/JUnit/LogMerger.php',
|
'ParaTest\\JUnit\\LogMerger' => $vendorDir . '/brianium/paratest/src/JUnit/LogMerger.php',
|
||||||
@@ -4726,6 +4818,7 @@ return array(
|
|||||||
'ParaTest\\RunnerInterface' => $vendorDir . '/brianium/paratest/src/RunnerInterface.php',
|
'ParaTest\\RunnerInterface' => $vendorDir . '/brianium/paratest/src/RunnerInterface.php',
|
||||||
'ParaTest\\Util\\PhpstormHelper' => $vendorDir . '/brianium/paratest/src/Util/PhpstormHelper.php',
|
'ParaTest\\Util\\PhpstormHelper' => $vendorDir . '/brianium/paratest/src/Util/PhpstormHelper.php',
|
||||||
'ParaTest\\WrapperRunner\\ApplicationForWrapperWorker' => $vendorDir . '/brianium/paratest/src/WrapperRunner/ApplicationForWrapperWorker.php',
|
'ParaTest\\WrapperRunner\\ApplicationForWrapperWorker' => $vendorDir . '/brianium/paratest/src/WrapperRunner/ApplicationForWrapperWorker.php',
|
||||||
|
'ParaTest\\WrapperRunner\\ProgressPrinterOutput' => $vendorDir . '/brianium/paratest/src/WrapperRunner/ProgressPrinterOutput.php',
|
||||||
'ParaTest\\WrapperRunner\\ResultPrinter' => $vendorDir . '/brianium/paratest/src/WrapperRunner/ResultPrinter.php',
|
'ParaTest\\WrapperRunner\\ResultPrinter' => $vendorDir . '/brianium/paratest/src/WrapperRunner/ResultPrinter.php',
|
||||||
'ParaTest\\WrapperRunner\\SuiteLoader' => $vendorDir . '/brianium/paratest/src/WrapperRunner/SuiteLoader.php',
|
'ParaTest\\WrapperRunner\\SuiteLoader' => $vendorDir . '/brianium/paratest/src/WrapperRunner/SuiteLoader.php',
|
||||||
'ParaTest\\WrapperRunner\\WorkerCrashedException' => $vendorDir . '/brianium/paratest/src/WrapperRunner/WorkerCrashedException.php',
|
'ParaTest\\WrapperRunner\\WorkerCrashedException' => $vendorDir . '/brianium/paratest/src/WrapperRunner/WorkerCrashedException.php',
|
||||||
@@ -4772,6 +4865,7 @@ return array(
|
|||||||
'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
|
'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
|
||||||
'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
||||||
'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
|
'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
|
||||||
|
'PharIo\\Manifest\\NoEmailAddressException' => $vendorDir . '/phar-io/manifest/src/exceptions/NoEmailAddressException.php',
|
||||||
'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
|
'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
|
||||||
'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
||||||
'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
||||||
@@ -5552,6 +5646,7 @@ return array(
|
|||||||
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
|
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php',
|
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
|
'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
|
||||||
|
'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
|
'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
|
'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
|
'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
|
||||||
@@ -6021,6 +6116,7 @@ return array(
|
|||||||
'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php',
|
'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php',
|
||||||
'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php',
|
'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php',
|
||||||
'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php',
|
'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php',
|
||||||
|
'Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php',
|
||||||
'Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php',
|
'Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php',
|
||||||
'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php',
|
'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php',
|
||||||
'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php',
|
'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php',
|
||||||
@@ -6030,12 +6126,15 @@ return array(
|
|||||||
'Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php',
|
'Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php',
|
||||||
'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php',
|
'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php',
|
||||||
'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php',
|
'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php',
|
||||||
|
'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php',
|
||||||
|
'Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php',
|
||||||
'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
|
'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php',
|
'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php',
|
'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php',
|
||||||
|
'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php',
|
'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php',
|
||||||
@@ -6051,6 +6150,7 @@ return array(
|
|||||||
'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php',
|
'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php',
|
||||||
'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php',
|
'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php',
|
||||||
'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php',
|
'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php',
|
||||||
|
'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php',
|
||||||
'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php',
|
'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php',
|
||||||
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php',
|
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php',
|
||||||
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
|
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
|
||||||
@@ -6080,6 +6180,7 @@ return array(
|
|||||||
'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php',
|
'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php',
|
||||||
'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php',
|
'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php',
|
||||||
'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php',
|
'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php',
|
||||||
|
'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => $vendorDir . '/symfony/console/Helper/TerminalInputHelper.php',
|
||||||
'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php',
|
'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php',
|
||||||
'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php',
|
'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php',
|
||||||
'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php',
|
'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php',
|
||||||
@@ -6091,6 +6192,9 @@ return array(
|
|||||||
'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php',
|
'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php',
|
||||||
'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php',
|
'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php',
|
||||||
'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php',
|
'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php',
|
||||||
|
'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php',
|
||||||
|
'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php',
|
||||||
|
'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php',
|
||||||
'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php',
|
'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php',
|
||||||
'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php',
|
'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php',
|
||||||
'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php',
|
'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php',
|
||||||
@@ -6104,6 +6208,7 @@ return array(
|
|||||||
'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php',
|
'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php',
|
||||||
'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php',
|
'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php',
|
||||||
'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php',
|
'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php',
|
||||||
|
'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php',
|
||||||
'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php',
|
'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php',
|
||||||
'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php',
|
'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php',
|
||||||
'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php',
|
'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php',
|
||||||
@@ -6612,11 +6717,16 @@ return array(
|
|||||||
'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php',
|
'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php',
|
||||||
'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php',
|
'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php',
|
||||||
'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php',
|
'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php',
|
||||||
|
'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php',
|
||||||
'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php',
|
'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php',
|
||||||
'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php',
|
'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php',
|
||||||
'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php',
|
'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php',
|
||||||
|
'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php',
|
||||||
|
'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php',
|
||||||
|
'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php',
|
||||||
'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php',
|
'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php',
|
||||||
'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php',
|
'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php',
|
||||||
|
'Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php',
|
||||||
'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php',
|
'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php',
|
||||||
'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php',
|
'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php',
|
||||||
'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php',
|
'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php',
|
||||||
@@ -6699,9 +6809,11 @@ return array(
|
|||||||
'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php',
|
'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php',
|
||||||
'Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php',
|
'Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php',
|
||||||
'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php',
|
'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php',
|
||||||
|
'Symfony\\Component\\String\\Inflector\\SpanishInflector' => $vendorDir . '/symfony/string/Inflector/SpanishInflector.php',
|
||||||
'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php',
|
'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php',
|
||||||
'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php',
|
'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php',
|
||||||
'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php',
|
'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php',
|
||||||
|
'Symfony\\Component\\String\\TruncateMode' => $vendorDir . '/symfony/string/TruncateMode.php',
|
||||||
'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php',
|
'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php',
|
||||||
'Symfony\\Component\\Translation\\CatalogueMetadataAwareInterface' => $vendorDir . '/symfony/translation/CatalogueMetadataAwareInterface.php',
|
'Symfony\\Component\\Translation\\CatalogueMetadataAwareInterface' => $vendorDir . '/symfony/translation/CatalogueMetadataAwareInterface.php',
|
||||||
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php',
|
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php',
|
||||||
@@ -6902,8 +7014,12 @@ return array(
|
|||||||
'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php',
|
'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php',
|
'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php',
|
||||||
'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php',
|
'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ContainerAwareInterface' => $vendorDir . '/symfony/service-contracts/ContainerAwareInterface.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ContainerProviderInterface' => $vendorDir . '/symfony/service-contracts/ContainerProviderInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php',
|
'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ServiceCollectionInterface' => $vendorDir . '/symfony/service-contracts/ServiceCollectionInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php',
|
'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php',
|
'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php',
|
'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
|
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php',
|
||||||
|
|||||||
Vendored
+1
@@ -75,6 +75,7 @@ return array(
|
|||||||
'ParaTest\\' => array($vendorDir . '/brianium/paratest/src'),
|
'ParaTest\\' => array($vendorDir . '/brianium/paratest/src'),
|
||||||
'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
|
'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
|
||||||
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
|
||||||
|
'Nette\\' => array($vendorDir . '/nette/schema/src', $vendorDir . '/nette/utils/src'),
|
||||||
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
|
||||||
'League\\OAuth1\\Client\\' => array($vendorDir . '/league/oauth1-client/src'),
|
'League\\OAuth1\\Client\\' => array($vendorDir . '/league/oauth1-client/src'),
|
||||||
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
||||||
|
|||||||
Vendored
+230
-108
@@ -138,6 +138,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'N' =>
|
'N' =>
|
||||||
array (
|
array (
|
||||||
'NunoMaduro\\Collision\\' => 21,
|
'NunoMaduro\\Collision\\' => 21,
|
||||||
|
'Nette\\' => 6,
|
||||||
),
|
),
|
||||||
'M' =>
|
'M' =>
|
||||||
array (
|
array (
|
||||||
@@ -511,6 +512,11 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/nunomaduro/collision/src',
|
0 => __DIR__ . '/..' . '/nunomaduro/collision/src',
|
||||||
),
|
),
|
||||||
|
'Nette\\' =>
|
||||||
|
array (
|
||||||
|
0 => __DIR__ . '/..' . '/nette/schema/src',
|
||||||
|
1 => __DIR__ . '/..' . '/nette/utils/src',
|
||||||
|
),
|
||||||
'Monolog\\' =>
|
'Monolog\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
|
0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
|
||||||
@@ -1308,6 +1314,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php',
|
'DeepCopy\\Matcher\\PropertyTypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php',
|
||||||
'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php',
|
'DeepCopy\\Reflection\\ReflectionHelper' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php',
|
||||||
'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php',
|
'DeepCopy\\TypeFilter\\Date\\DateIntervalFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php',
|
||||||
|
'DeepCopy\\TypeFilter\\Date\\DatePeriodFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DatePeriodFilter.php',
|
||||||
'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php',
|
'DeepCopy\\TypeFilter\\ReplaceFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php',
|
||||||
'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php',
|
'DeepCopy\\TypeFilter\\ShallowCopyFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php',
|
||||||
'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php',
|
'DeepCopy\\TypeFilter\\Spl\\ArrayObjectFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php',
|
||||||
@@ -2344,9 +2351,12 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Fidry\\CpuCoreCounter\\Diagnoser' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Diagnoser.php',
|
'Fidry\\CpuCoreCounter\\Diagnoser' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Diagnoser.php',
|
||||||
'Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
|
'Fidry\\CpuCoreCounter\\Executor\\ProcOpenExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcOpenExecutor.php',
|
||||||
'Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
|
'Fidry\\CpuCoreCounter\\Executor\\ProcessExecutor' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Executor/ProcessExecutor.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletLogicalFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\CmiCmdletPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CmiCmdletPhysicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
|
'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
|
||||||
@@ -2355,13 +2365,16 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\NProcFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NProcessorFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\NullCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/NullCpuCoreFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\OnlyInPowerShellFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyInPowerShellFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\OnlyOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/OnlyOnOSFamilyFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\ProcOpenBasedFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\SkipOnOSFamilyFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/SkipOnOSFamilyFinder.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\Finder\\WindowsRegistryLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WindowsRegistryLogicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\WmicLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicLogicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
|
'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
|
||||||
'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
|
'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
|
||||||
|
'Fidry\\CpuCoreCounter\\ParallelisationResult' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/ParallelisationResult.php',
|
||||||
'Fruitcake\\Cors\\CorsService' => __DIR__ . '/..' . '/fruitcake/php-cors/src/CorsService.php',
|
'Fruitcake\\Cors\\CorsService' => __DIR__ . '/..' . '/fruitcake/php-cors/src/CorsService.php',
|
||||||
'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => __DIR__ . '/..' . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php',
|
'Fruitcake\\Cors\\Exceptions\\InvalidOptionException' => __DIR__ . '/..' . '/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php',
|
||||||
'GrahamCampbell\\ResultType\\Error' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Error.php',
|
'GrahamCampbell\\ResultType\\Error' => __DIR__ . '/..' . '/graham-campbell/result-type/src/Error.php',
|
||||||
@@ -4602,6 +4615,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Nette\\Schema\\Processor' => __DIR__ . '/..' . '/nette/schema/src/Schema/Processor.php',
|
'Nette\\Schema\\Processor' => __DIR__ . '/..' . '/nette/schema/src/Schema/Processor.php',
|
||||||
'Nette\\Schema\\Schema' => __DIR__ . '/..' . '/nette/schema/src/Schema/Schema.php',
|
'Nette\\Schema\\Schema' => __DIR__ . '/..' . '/nette/schema/src/Schema/Schema.php',
|
||||||
'Nette\\Schema\\ValidationException' => __DIR__ . '/..' . '/nette/schema/src/Schema/ValidationException.php',
|
'Nette\\Schema\\ValidationException' => __DIR__ . '/..' . '/nette/schema/src/Schema/ValidationException.php',
|
||||||
|
'Nette\\ShouldNotHappenException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
|
||||||
'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php',
|
'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php',
|
||||||
'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php',
|
'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php',
|
||||||
'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
|
'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php',
|
||||||
@@ -4611,6 +4625,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
|
'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
|
||||||
'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
|
'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
|
||||||
|
'Nette\\Utils\\DateTimeImmutable' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTimeImmutable.php',
|
||||||
'Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php',
|
'Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php',
|
||||||
'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
|
'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
|
||||||
'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php',
|
'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php',
|
||||||
@@ -4619,13 +4634,20 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
|
'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
|
||||||
'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
|
'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php',
|
||||||
'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
|
'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
|
||||||
|
'Nette\\Utils\\ImageColor' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageColor.php',
|
||||||
'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||||
|
'Nette\\Utils\\ImageType' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageType.php',
|
||||||
|
'Nette\\Utils\\Iterables' => __DIR__ . '/..' . '/nette/utils/src/Utils/Iterables.php',
|
||||||
'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
|
'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
|
||||||
'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
|
'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
|
||||||
'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
|
'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
|
||||||
|
'Nette\\Utils\\Process' => __DIR__ . '/..' . '/nette/utils/src/Utils/Process.php',
|
||||||
|
'Nette\\Utils\\ProcessFailedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||||
|
'Nette\\Utils\\ProcessTimeoutException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
|
'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
|
||||||
'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
|
'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
|
||||||
|
'Nette\\Utils\\ReflectionMethod' => __DIR__ . '/..' . '/nette/utils/src/Utils/ReflectionMethod.php',
|
||||||
'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||||
'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
|
'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
|
||||||
'Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php',
|
'Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php',
|
||||||
@@ -4677,6 +4699,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\Code\\ClassMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ClassMethod.php',
|
'PHPUnit\\Event\\Code\\ClassMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ClassMethod.php',
|
||||||
'PHPUnit\\Event\\Code\\ComparisonFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php',
|
'PHPUnit\\Event\\Code\\ComparisonFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailure.php',
|
||||||
'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php',
|
'PHPUnit\\Event\\Code\\ComparisonFailureBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/ComparisonFailureBuilder.php',
|
||||||
|
'PHPUnit\\Event\\Code\\NoTestCaseObjectOnCallStackException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/NoTestCaseObjectOnCallStackException.php',
|
||||||
'PHPUnit\\Event\\Code\\Phpt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php',
|
'PHPUnit\\Event\\Code\\Phpt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Phpt.php',
|
||||||
'PHPUnit\\Event\\Code\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Test.php',
|
'PHPUnit\\Event\\Code\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/Test.php',
|
||||||
'PHPUnit\\Event\\Code\\TestCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php',
|
'PHPUnit\\Event\\Code\\TestCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Test/TestCollection.php',
|
||||||
@@ -4714,10 +4737,14 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Subscriber.php',
|
'PHPUnit\\Event\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Subscriber.php',
|
||||||
'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php',
|
'PHPUnit\\Event\\SubscriberTypeAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Exception/SubscriberTypeAlreadyRegisteredException.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\Duration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php',
|
'PHPUnit\\Event\\Telemetry\\Duration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Duration.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatus' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatus.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/GarbageCollectorStatusProvider.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\HRTime' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php',
|
'PHPUnit\\Event\\Telemetry\\HRTime' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/HRTime.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\Info' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php',
|
'PHPUnit\\Event\\Telemetry\\Info' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Info.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\MemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php',
|
'PHPUnit\\Event\\Telemetry\\MemoryMeter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryMeter.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\MemoryUsage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php',
|
'PHPUnit\\Event\\Telemetry\\MemoryUsage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/MemoryUsage.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\Php81GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php81GarbageCollectorStatusProvider.php',
|
||||||
|
'PHPUnit\\Event\\Telemetry\\Php83GarbageCollectorStatusProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Php83GarbageCollectorStatusProvider.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\Snapshot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php',
|
'PHPUnit\\Event\\Telemetry\\Snapshot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/Snapshot.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\StopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php',
|
'PHPUnit\\Event\\Telemetry\\StopWatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/StopWatch.php',
|
||||||
'PHPUnit\\Event\\Telemetry\\System' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php',
|
'PHPUnit\\Event\\Telemetry\\System' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/Telemetry/System.php',
|
||||||
@@ -4739,6 +4766,8 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/DeprecationTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php',
|
'PHPUnit\\Event\\TestRunner\\EventFacadeSealed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealed.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\EventFacadeSealedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/EventFacadeSealedSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\ExecutionAborted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAborted.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\ExecutionAbortedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionAbortedSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php',
|
'PHPUnit\\Event\\TestRunner\\ExecutionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinished.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php',
|
'PHPUnit\\Event\\TestRunner\\ExecutionStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExecutionStarted.php',
|
||||||
@@ -4749,6 +4778,12 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\ExtensionLoadedFromPharSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/ExtensionLoadedFromPharSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php',
|
'PHPUnit\\Event\\TestRunner\\Finished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Finished.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\FinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/FinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabled.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionDisabledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionDisabledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabled.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionEnabledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionEnabledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggered.php',
|
||||||
|
'PHPUnit\\Event\\TestRunner\\GarbageCollectionTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/GarbageCollectionTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php',
|
'PHPUnit\\Event\\TestRunner\\Started' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/Started.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php',
|
'PHPUnit\\Event\\TestRunner\\StartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/StartedSubscriber.php',
|
||||||
'PHPUnit\\Event\\TestRunner\\WarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php',
|
'PHPUnit\\Event\\TestRunner\\WarningTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/TestRunner/WarningTriggered.php',
|
||||||
@@ -4772,10 +4807,14 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php',
|
'PHPUnit\\Event\\TestSuite\\TestSuiteWithName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Value/TestSuite/TestSuiteWithName.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterLastTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterLastTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\AfterTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\AfterTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/AfterTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\AssertionFailed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php',
|
'PHPUnit\\Event\\Test\\AssertionFailed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Assertion/AssertionFailed.php',
|
||||||
@@ -4790,12 +4829,18 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\BeforeFirstTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeFirstTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\BeforeTestMethodErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\BeforeTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\BeforeTestMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/BeforeTestMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\ComparatorRegistered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php',
|
'PHPUnit\\Event\\Test\\ComparatorRegistered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegistered.php',
|
||||||
'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php',
|
'PHPUnit\\Event\\Test\\ComparatorRegisteredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/ComparatorRegisteredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\ConsideredRisky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php',
|
'PHPUnit\\Event\\Test\\ConsideredRisky' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRisky.php',
|
||||||
'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php',
|
'PHPUnit\\Event\\Test\\ConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ConsideredRiskySubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalled.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinished.php',
|
||||||
|
'PHPUnit\\Event\\Test\\DataProviderMethodFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/DataProviderMethodFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php',
|
'PHPUnit\\Event\\Test\\DeprecationTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggered.php',
|
||||||
'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php',
|
'PHPUnit\\Event\\Test\\DeprecationTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/DeprecationTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\ErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php',
|
'PHPUnit\\Event\\Test\\ErrorTriggered' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/ErrorTriggered.php',
|
||||||
@@ -4839,12 +4884,18 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php',
|
'PHPUnit\\Event\\Test\\PhpunitWarningTriggeredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Issue/PhpunitWarningTriggeredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php',
|
'PHPUnit\\Event\\Test\\PostConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\PostConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PostConditionErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PostConditionErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php',
|
'PHPUnit\\Event\\Test\\PostConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\PostConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PostConditionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php',
|
'PHPUnit\\Event\\Test\\PreConditionCalled' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalled.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php',
|
'PHPUnit\\Event\\Test\\PreConditionCalledSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionCalledSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreConditionErrored' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErrored.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreConditionErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionErroredSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php',
|
'PHPUnit\\Event\\Test\\PreConditionFinished' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinished.php',
|
||||||
'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php',
|
'PHPUnit\\Event\\Test\\PreConditionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/HookMethod/PreConditionFinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreparationFailed' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailed.php',
|
||||||
|
'PHPUnit\\Event\\Test\\PreparationFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationFailedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\PreparationStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php',
|
'PHPUnit\\Event\\Test\\PreparationStarted' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStarted.php',
|
||||||
'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php',
|
'PHPUnit\\Event\\Test\\PreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/PreparationStartedSubscriber.php',
|
||||||
'PHPUnit\\Event\\Test\\Prepared' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php',
|
'PHPUnit\\Event\\Test\\Prepared' => __DIR__ . '/..' . '/phpunit/phpunit/src/Event/Events/Test/Lifecycle/Prepared.php',
|
||||||
@@ -4896,6 +4947,10 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php',
|
'PHPUnit\\Framework\\Attributes\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeGlobalVariableFromBackup.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php',
|
'PHPUnit\\Framework\\Attributes\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/ExcludeStaticPropertyFromBackup.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Group.php',
|
'PHPUnit\\Framework\\Attributes\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Group.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreClassForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreClassForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreDeprecations.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreFunctionForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreFunctionForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\IgnoreMethodForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/IgnoreMethodForCodeCoverage.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\Large' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Large.php',
|
'PHPUnit\\Framework\\Attributes\\Large' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Large.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\Medium' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Medium.php',
|
'PHPUnit\\Framework\\Attributes\\Medium' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Medium.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php',
|
'PHPUnit\\Framework\\Attributes\\PostCondition' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/PostCondition.php',
|
||||||
@@ -4920,6 +4975,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Framework\\Attributes\\Ticket' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php',
|
'PHPUnit\\Framework\\Attributes\\Ticket' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/Ticket.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php',
|
'PHPUnit\\Framework\\Attributes\\UsesClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesClass.php',
|
||||||
'PHPUnit\\Framework\\Attributes\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php',
|
'PHPUnit\\Framework\\Attributes\\UsesFunction' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/UsesFunction.php',
|
||||||
|
'PHPUnit\\Framework\\Attributes\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Attributes/WithoutErrorHandler.php',
|
||||||
'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
|
'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
|
||||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php',
|
'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotAcceptParameterTypeException.php',
|
||||||
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
|
'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ObjectEquals/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
|
||||||
@@ -4963,7 +5019,8 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
|
'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
|
'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
|
'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectEquals.php',
|
'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
|
||||||
|
'PHPUnit\\Framework\\Constraint\\ObjectHasProperty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasProperty.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
|
'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
|
'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
|
||||||
'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
|
'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
|
||||||
@@ -4979,7 +5036,6 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
|
'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
|
||||||
'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
|
||||||
'PHPUnit\\Framework\\EmptyStringException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php',
|
'PHPUnit\\Framework\\EmptyStringException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/EmptyStringException.php',
|
||||||
'PHPUnit\\Framework\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Error.php',
|
|
||||||
'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
|
'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
|
||||||
'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
|
'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
|
||||||
'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
|
'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
|
||||||
@@ -4990,77 +5046,83 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
|
'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
|
||||||
'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
|
'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
|
||||||
'PHPUnit\\Framework\\InvalidDependencyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php',
|
'PHPUnit\\Framework\\InvalidDependencyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDependencyException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Api' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Identity.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationMocker.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/InvocationStubber.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/MethodNameMatch.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/ParametersMatch.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
|
'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Builder/Stub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
|
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassIsEnumerationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsEnumerationException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ClassIsReadonlyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsReadonlyException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
|
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
|
'PHPUnit\\Framework\\MockObject\\DoubledCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/DoubledCloneMethod.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
|
'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
|
'PHPUnit\\Framework\\MockObject\\Generator\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/CannotUseAddMethodsException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsEnumerationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsEnumerationException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsFinalException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ClassIsReadonlyException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ClassIsReadonlyException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/DuplicateMethodException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/Exception.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Generator.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/InvalidMethodNameException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockClass.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethod.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockMethodSet.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockTrait.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/MockType.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\NameAlreadyInUseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/NameAlreadyInUseException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/OriginalConstructorInvocationRequiredException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/ReflectionException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/RuntimeException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/SoapExtensionNotAvailableException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\TemplateLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/TemplateLoader.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownClassException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTraitException.php',
|
||||||
|
'PHPUnit\\Framework\\MockObject\\Generator\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator/Exception/UnknownTypeException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
|
'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
|
'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Invocation.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
|
'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/InvocationHandler.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
|
'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
|
'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Matcher.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
|
'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
|
'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/Method.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
|
'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/MethodNameConstraint.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
|
'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
|
'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObject.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
|
'PHPUnit\\Framework\\MockObject\\MockObjectApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/MockObjectApi.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
|
'PHPUnit\\Framework\\MockObject\\MockObjectInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/MockObjectInternal.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
|
'PHPUnit\\Framework\\MockObject\\NeverReturningMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NeverReturningMethodException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
|
'PHPUnit\\Framework\\MockObject\\NoMoreReturnValuesConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/NoMoreReturnValuesConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
|
'PHPUnit\\Framework\\MockObject\\ProxiedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/ProxiedCloneMethod.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\MockedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php',
|
'PHPUnit\\Framework\\MockObject\\ReturnValueGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/ReturnValueGenerator.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
|
'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyInvokedCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/AnyParameters.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvocationOrder.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtLeastOnce.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedAtMostCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/InvokedCount.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/MethodName.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/Parameters.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
|
'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Rule/ParametersRule.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
|
'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
|
'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/Stub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
|
'PHPUnit\\Framework\\MockObject\\StubApi' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Api/StubApi.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
|
'PHPUnit\\Framework\\MockObject\\StubInternal' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Interface/StubInternal.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Exception.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnArgument.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnCallback.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnReference.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnSelf.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnStub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ReturnValueMap.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\TemplateLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/TemplateLoader.php',
|
'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/Stub.php',
|
||||||
'PHPUnit\\Framework\\MockObject\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\UnmockedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php',
|
|
||||||
'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
|
|
||||||
'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
|
'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
|
||||||
'PHPUnit\\Framework\\PhptAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php',
|
'PHPUnit\\Framework\\PhptAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PhptAssertionFailedError.php',
|
||||||
'PHPUnit\\Framework\\ProcessIsolationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php',
|
'PHPUnit\\Framework\\ProcessIsolationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ProcessIsolationException.php',
|
||||||
@@ -5093,18 +5155,19 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Framework\\TestStatus\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php',
|
'PHPUnit\\Framework\\TestStatus\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestStatus/Warning.php',
|
||||||
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
|
||||||
'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
|
||||||
'PHPUnit\\Framework\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassException.php',
|
|
||||||
'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php',
|
'PHPUnit\\Framework\\UnknownClassOrInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownClassOrInterfaceException.php',
|
||||||
'PHPUnit\\Framework\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php',
|
'PHPUnit\\Framework\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnknownTypeException.php',
|
||||||
'PHPUnit\\Logging\\EventLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/EventLogger.php',
|
'PHPUnit\\Logging\\EventLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/EventLogger.php',
|
||||||
'PHPUnit\\Logging\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/Exception.php',
|
|
||||||
'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php',
|
'PHPUnit\\Logging\\JUnit\\JunitXmlLogger' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/JunitXmlLogger.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php',
|
'PHPUnit\\Logging\\JUnit\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/Subscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestErroredSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFailedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestMarkedIncompleteSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\JUnit\\TestPreparationFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationFailedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\JUnit\\TestPreparationStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparationStartedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPreparedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\JUnit\\TestPrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestPrintedUnexpectedOutputSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSkippedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php',
|
'PHPUnit\\Logging\\JUnit\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/JUnit/Subscriber/TestSuiteFinishedSubscriber.php',
|
||||||
@@ -5119,31 +5182,35 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestPreparedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestRunnerExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestRunnerExecutionFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSkippedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteBeforeFirstTestMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteBeforeFirstTestMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteFinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteSkippedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php',
|
'PHPUnit\\Logging\\TeamCity\\TestSuiteStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TeamCity/Subscriber/TestSuiteStartedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php',
|
'PHPUnit\\Logging\\TestDox\\HtmlRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/HtmlRenderer.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php',
|
'PHPUnit\\Logging\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/NamePrettifier.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php',
|
'PHPUnit\\Logging\\TestDox\\PlainTextRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/PlainTextRenderer.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/Subscriber.php',
|
'PHPUnit\\Logging\\TestDox\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/Subscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestConsideredRiskySubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestConsideredRiskySubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectForAbstractClassSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectForAbstractClassSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestErroredSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectForTraitSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectForTraitSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFailedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectFromWsdlSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectFromWsdlSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedMockObjectSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedMockObjectSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestMarkedIncompleteSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedPartialMockObjectSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedPartialMockObjectSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPassedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedTestProxySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedTestProxySubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestPreparedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestCreatedTestStubSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestCreatedTestStubSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResult.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestErroredSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResultCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollection.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestFailedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestFailedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollectionIterator.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestFinishedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestResultCollector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/TestResultCollector.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestMarkedIncompleteSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestSkippedSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestPassedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestPassedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredNoticeSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResult.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResultCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollection.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResultCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollectionIterator.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpWarningSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestResultCollector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/TestResultCollector.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitDeprecationSubscriber.php',
|
||||||
'PHPUnit\\Logging\\TestDox\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestMethod/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitErrorSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
||||||
|
'PHPUnit\\Logging\\TestDox\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Logging/TestDox/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
'PHPUnit\\Metadata\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/After.php',
|
'PHPUnit\\Metadata\\After' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/After.php',
|
||||||
'PHPUnit\\Metadata\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/AfterClass.php',
|
'PHPUnit\\Metadata\\AfterClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/AfterClass.php',
|
||||||
'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php',
|
'PHPUnit\\Metadata\\Annotation\\Parser\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Parser/Annotation/DocBlock.php',
|
||||||
@@ -5172,6 +5239,11 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php',
|
'PHPUnit\\Metadata\\ExcludeGlobalVariableFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeGlobalVariableFromBackup.php',
|
||||||
'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php',
|
'PHPUnit\\Metadata\\ExcludeStaticPropertyFromBackup' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/ExcludeStaticPropertyFromBackup.php',
|
||||||
'PHPUnit\\Metadata\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Group.php',
|
'PHPUnit\\Metadata\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Group.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreClassForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreClassForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreDeprecations' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreDeprecations.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreFunctionForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreFunctionForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Metadata\\IgnoreMethodForCodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/IgnoreMethodForCodeCoverage.php',
|
||||||
|
'PHPUnit\\Metadata\\InvalidAttributeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/InvalidAttributeException.php',
|
||||||
'PHPUnit\\Metadata\\InvalidVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php',
|
'PHPUnit\\Metadata\\InvalidVersionRequirementException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Exception/InvalidVersionRequirementException.php',
|
||||||
'PHPUnit\\Metadata\\Metadata' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Metadata.php',
|
'PHPUnit\\Metadata\\Metadata' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Metadata.php',
|
||||||
'PHPUnit\\Metadata\\MetadataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollection.php',
|
'PHPUnit\\Metadata\\MetadataCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/MetadataCollection.php',
|
||||||
@@ -5208,13 +5280,30 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php',
|
'PHPUnit\\Metadata\\Version\\ComparisonRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ComparisonRequirement.php',
|
||||||
'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php',
|
'PHPUnit\\Metadata\\Version\\ConstraintRequirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/ConstraintRequirement.php',
|
||||||
'PHPUnit\\Metadata\\Version\\Requirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/Requirement.php',
|
'PHPUnit\\Metadata\\Version\\Requirement' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/Version/Requirement.php',
|
||||||
|
'PHPUnit\\Metadata\\WithoutErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Metadata/WithoutErrorHandler.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Baseline' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Baseline.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\CannotLoadBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/CannotLoadBaselineException.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\FileDoesNotHaveLineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Exception/FileDoesNotHaveLineException.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Generator.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Issue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Issue.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Reader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Reader.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\RelativePathCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/RelativePathCalculator.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/Subscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredNoticeSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredPhpWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredPhpWarningSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\Baseline\\Writer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Baseline/Writer.php',
|
||||||
'PHPUnit\\Runner\\ClassCannotBeFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php',
|
'PHPUnit\\Runner\\ClassCannotBeFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeFoundException.php',
|
||||||
'PHPUnit\\Runner\\ClassCannotBeInstantiatedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassCannotBeInstantiatedException.php',
|
'PHPUnit\\Runner\\ClassDoesNotExtendTestCaseException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExtendTestCaseException.php',
|
||||||
'PHPUnit\\Runner\\ClassDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotExistException.php',
|
|
||||||
'PHPUnit\\Runner\\ClassDoesNotImplementExtensionInterfaceException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassDoesNotImplementExtensionInterfaceException.php',
|
|
||||||
'PHPUnit\\Runner\\ClassIsAbstractException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php',
|
'PHPUnit\\Runner\\ClassIsAbstractException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ClassIsAbstractException.php',
|
||||||
'PHPUnit\\Runner\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/CodeCoverage.php',
|
'PHPUnit\\Runner\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/CodeCoverage.php',
|
||||||
'PHPUnit\\Runner\\DirectoryCannotBeCreatedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/DirectoryCannotBeCreatedException.php',
|
'PHPUnit\\Runner\\CodeCoverageFileExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/CodeCoverageFileExistsException.php',
|
||||||
|
'PHPUnit\\Runner\\DirectoryDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/DirectoryDoesNotExistException.php',
|
||||||
|
'PHPUnit\\Runner\\ErrorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ErrorException.php',
|
||||||
|
'PHPUnit\\Runner\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ErrorHandler.php',
|
||||||
'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/Exception.php',
|
'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/Exception.php',
|
||||||
'PHPUnit\\Runner\\Extension\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/Extension.php',
|
'PHPUnit\\Runner\\Extension\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/Extension.php',
|
||||||
'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php',
|
'PHPUnit\\Runner\\Extension\\ExtensionBootstrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionBootstrapper.php',
|
||||||
@@ -5227,13 +5316,17 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
|
||||||
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
|
||||||
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
|
||||||
|
'PHPUnit\\Runner\\Filter\\TestIdFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/TestIdFilterIterator.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\ExecutionFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionFinishedSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/ExecutionStartedSubscriber.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\GarbageCollectionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/GarbageCollectionHandler.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/Subscriber.php',
|
||||||
|
'PHPUnit\\Runner\\GarbageCollection\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/GarbageCollection/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\Runner\\InvalidOrderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php',
|
'PHPUnit\\Runner\\InvalidOrderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidOrderException.php',
|
||||||
'PHPUnit\\Runner\\InvalidPhptFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php',
|
'PHPUnit\\Runner\\InvalidPhptFileException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/InvalidPhptFileException.php',
|
||||||
'PHPUnit\\Runner\\NoIgnoredEventException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/NoIgnoredEventException.php',
|
|
||||||
'PHPUnit\\Runner\\ParameterDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php',
|
'PHPUnit\\Runner\\ParameterDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ParameterDoesNotExistException.php',
|
||||||
'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php',
|
'PHPUnit\\Runner\\PhptExternalFileCannotBeLoadedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/PhptExternalFileCannotBeLoadedException.php',
|
||||||
'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
|
||||||
'PHPUnit\\Runner\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/ReflectionException.php',
|
|
||||||
'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php',
|
'PHPUnit\\Runner\\ResultCache\\DefaultResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/DefaultResultCache.php',
|
||||||
'PHPUnit\\Runner\\ResultCache\\NullResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php',
|
'PHPUnit\\Runner\\ResultCache\\NullResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/NullResultCache.php',
|
||||||
'PHPUnit\\Runner\\ResultCache\\ResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php',
|
'PHPUnit\\Runner\\ResultCache\\ResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCache/ResultCache.php',
|
||||||
@@ -5252,10 +5345,12 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
|
'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
|
||||||
'PHPUnit\\Runner\\UnsupportedPhptSectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php',
|
'PHPUnit\\Runner\\UnsupportedPhptSectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception/UnsupportedPhptSectionException.php',
|
||||||
'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
|
||||||
|
'PHPUnit\\TestRunner\\TestResult\\AfterTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/AfterTestClassMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\Collector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Collector.php',
|
'PHPUnit\\TestRunner\\TestResult\\Collector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Collector.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\ExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/ExecutionStartedSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Facade.php',
|
'PHPUnit\\TestRunner\\TestResult\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Facade.php',
|
||||||
|
'PHPUnit\\TestRunner\\TestResult\\Issues\\Issue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Issue.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\PassedTests' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php',
|
'PHPUnit\\TestRunner\\TestResult\\PassedTests' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/PassedTests.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\Subscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/Subscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\TestConsideredRiskySubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestConsideredRiskySubscriber.php',
|
||||||
@@ -5282,11 +5377,13 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
||||||
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
|
'PHPUnit\\TestRunner\\TestResult\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResult/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Application' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Application.php',
|
'PHPUnit\\TextUI\\Application' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Application.php',
|
||||||
|
'PHPUnit\\TextUI\\CannotOpenSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/CannotOpenSocketException.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php',
|
'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Builder.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php',
|
'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Configuration.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php',
|
'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/Exception.php',
|
||||||
'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php',
|
'PHPUnit\\TextUI\\CliArguments\\XmlConfigurationFileFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Cli/XmlConfigurationFileFinder.php',
|
||||||
'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php',
|
'PHPUnit\\TextUI\\Command\\AtLeastVersionCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/AtLeastVersionCommand.php',
|
||||||
|
'PHPUnit\\TextUI\\Command\\CheckPhpConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/CheckPhpConfigurationCommand.php',
|
||||||
'PHPUnit\\TextUI\\Command\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Command.php',
|
'PHPUnit\\TextUI\\Command\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Command.php',
|
||||||
'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php',
|
'PHPUnit\\TextUI\\Command\\GenerateConfigurationCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/GenerateConfigurationCommand.php',
|
||||||
'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php',
|
'PHPUnit\\TextUI\\Command\\ListGroupsCommand' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command/Commands/ListGroupsCommand.php',
|
||||||
@@ -5324,12 +5421,12 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\Configuration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php',
|
'PHPUnit\\TextUI\\Configuration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Group.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/GroupCollectionIterator.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\IncludePathNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/IncludePathNotConfiguredException.php',
|
|
||||||
'PHPUnit\\TextUI\\Configuration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php',
|
'PHPUnit\\TextUI\\Configuration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSetting.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/IniSettingCollectionIterator.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php',
|
'PHPUnit\\TextUI\\Configuration\\LoggingNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/LoggingNotConfiguredException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\Merger' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php',
|
'PHPUnit\\TextUI\\Configuration\\Merger' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Merger.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\NoBaselineException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBaselineException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php',
|
'PHPUnit\\TextUI\\Configuration\\NoBootstrapException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoBootstrapException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php',
|
'PHPUnit\\TextUI\\Configuration\\NoCacheDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCacheDirectoryException.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\NoCliArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php',
|
'PHPUnit\\TextUI\\Configuration\\NoCliArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/NoCliArgumentException.php',
|
||||||
@@ -5341,6 +5438,9 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\Configuration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php',
|
'PHPUnit\\TextUI\\Configuration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Php.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php',
|
'PHPUnit\\TextUI\\Configuration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/PhpHandler.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php',
|
'PHPUnit\\TextUI\\Configuration\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Registry.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\Source' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/Source.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\SourceFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/SourceFilter.php',
|
||||||
|
'PHPUnit\\TextUI\\Configuration\\SourceMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/SourceMapper.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php',
|
'PHPUnit\\TextUI\\Configuration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectory.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/TestDirectoryCollectionIterator.php',
|
||||||
@@ -5355,8 +5455,8 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\Configuration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php',
|
'PHPUnit\\TextUI\\Configuration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollection.php',
|
||||||
'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php',
|
'PHPUnit\\TextUI\\Configuration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Value/VariableCollectionIterator.php',
|
||||||
'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
|
'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
|
||||||
'PHPUnit\\TextUI\\ExtensionsNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/ExtensionsNotConfiguredException.php',
|
|
||||||
'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php',
|
'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php',
|
||||||
|
'PHPUnit\\TextUI\\InvalidSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/InvalidSocketException.php',
|
||||||
'PHPUnit\\TextUI\\Output\\DefaultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php',
|
'PHPUnit\\TextUI\\Output\\DefaultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/DefaultPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\BeforeTestClassMethodErroredSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/BeforeTestClassMethodErroredSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\ProgressPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/ProgressPrinter.php',
|
||||||
@@ -5367,10 +5467,10 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestFinishedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestFinishedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestMarkedIncompleteSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestMarkedIncompleteSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPreparedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPreparedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestPrintedUnexpectedOutputSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestPrintedUnexpectedOutputSubscriber.php',
|
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestRunnerExecutionStartedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestRunnerExecutionStartedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestSkippedSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredDeprecationSubscriber.php',
|
||||||
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredErrorSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredErrorSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredNoticeSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpDeprecationSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpDeprecationSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpNoticeSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpNoticeSubscriber.php',
|
||||||
@@ -5379,18 +5479,19 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredPhpunitWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredPhpunitWarningSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ProgressPrinter\\TestTriggeredWarningSubscriber' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ProgressPrinter/Subscriber/TestTriggeredWarningSubscriber.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php',
|
'PHPUnit\\TextUI\\Output\\Default\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/ResultPrinter.php',
|
||||||
|
'PHPUnit\\TextUI\\Output\\Default\\UnexpectedOutputPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Default/UnexpectedOutputPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Facade.php',
|
'PHPUnit\\TextUI\\Output\\Facade' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Facade.php',
|
||||||
'PHPUnit\\TextUI\\Output\\NullPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php',
|
'PHPUnit\\TextUI\\Output\\NullPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/NullPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php',
|
'PHPUnit\\TextUI\\Output\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/Printer/Printer.php',
|
||||||
'PHPUnit\\TextUI\\Output\\SummaryPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php',
|
'PHPUnit\\TextUI\\Output\\SummaryPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/SummaryPrinter.php',
|
||||||
'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php',
|
'PHPUnit\\TextUI\\Output\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Output/TestDox/ResultPrinter.php',
|
||||||
'PHPUnit\\TextUI\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
|
|
||||||
'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
|
'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
|
||||||
'PHPUnit\\TextUI\\ShellExitCodeCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php',
|
'PHPUnit\\TextUI\\ShellExitCodeCalculator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ShellExitCodeCalculator.php',
|
||||||
'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
|
'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
|
||||||
'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
|
'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
|
||||||
'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
|
||||||
'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php',
|
'PHPUnit\\TextUI\\TestSuiteFilterProcessor' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteFilterProcessor.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\CannotFindSchemaException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Exception/CannotFindSchemaException.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/CodeCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Clover.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/CodeCoverage/Report/Cobertura.php',
|
||||||
@@ -5409,6 +5510,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/CoverageXmlToReport.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\DefaultConfiguration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/DefaultConfiguration.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Exception.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/FailedSchemaDetectionResult.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Generator.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Groups.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCacheDirectoryAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/IntroduceCacheDirectoryAttribute.php',
|
||||||
@@ -5423,13 +5525,13 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Logging/TestDox/Text.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/Migration.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilder.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationBuilderException.php',
|
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/MigrationException.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrator.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveCoverageDirectoriesToSource' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveCoverageDirectoriesToSource.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistIncludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/MoveWhitelistIncludesToCoverage.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/PHPUnit.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutResourceUsageDuringSmallTestsAttribute.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RemoveBeStrictAboutTodoAnnotatedTestsAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RemoveBeStrictAboutTodoAnnotatedTestsAttribute.php',
|
||||||
@@ -5450,42 +5552,38 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBackupStaticAttributesAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBackupStaticAttributesAttribute.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RenameBeStrictAboutCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameBeStrictAboutCoversAnnotationAttribute.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\RenameForceCoversAnnotationAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/RenameForceCoversAnnotationAttribute.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetectionResult.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SchemaDetector.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaFinder.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/SnapshotNodeList.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/SchemaDetector/SuccessfulSchemaDetectionResult.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/TestSuiteMapper.php',
|
||||||
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php',
|
'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Migration/Migrations/UpdateSchemaLocation.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/ValidationResult.php',
|
||||||
|
'PHPUnit\\TextUI\\XmlConfiguration\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Configuration/Xml/Validator/Validator.php',
|
||||||
'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php',
|
'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php',
|
||||||
'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
|
'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
|
||||||
'PHPUnit\\Util\\DirectoryDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/DirectoryDoesNotExistException.php',
|
|
||||||
'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
|
||||||
'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/Exception.php',
|
'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/Exception.php',
|
||||||
'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php',
|
'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php',
|
||||||
|
'PHPUnit\\Util\\Exporter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exporter.php',
|
||||||
'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
|
||||||
'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
|
||||||
'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
|
||||||
|
'PHPUnit\\Util\\Http\\Downloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Http/Downloader.php',
|
||||||
|
'PHPUnit\\Util\\Http\\PhpDownloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Http/PhpDownloader.php',
|
||||||
'PHPUnit\\Util\\InvalidDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php',
|
'PHPUnit\\Util\\InvalidDirectoryException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidDirectoryException.php',
|
||||||
'PHPUnit\\Util\\InvalidJsonException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php',
|
'PHPUnit\\Util\\InvalidJsonException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidJsonException.php',
|
||||||
'PHPUnit\\Util\\InvalidSocketException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidSocketException.php',
|
|
||||||
'PHPUnit\\Util\\InvalidVersionOperatorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php',
|
'PHPUnit\\Util\\InvalidVersionOperatorException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/InvalidVersionOperatorException.php',
|
||||||
'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
|
'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
|
||||||
'PHPUnit\\Util\\NoTestCaseObjectOnCallStackException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/NoTestCaseObjectOnCallStackException.php',
|
|
||||||
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
|
||||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||||
'PHPUnit\\Util\\PHP\\PhpProcessException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php',
|
'PHPUnit\\Util\\PHP\\PhpProcessException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/PhpProcessException.php',
|
||||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
|
||||||
'PHPUnit\\Util\\Reflection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Reflection.php',
|
'PHPUnit\\Util\\Reflection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Reflection.php',
|
||||||
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
||||||
'PHPUnit\\Util\\ThrowableToStringMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php',
|
'PHPUnit\\Util\\ThrowableToStringMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ThrowableToStringMapper.php',
|
||||||
'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
|
'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
|
||||||
'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
|
'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Xml.php',
|
||||||
'PHPUnit\\Util\\Xml\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Exception.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php',
|
'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php',
|
||||||
'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Validator.php',
|
|
||||||
'PHPUnit\\Util\\Xml\\XmlException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/XmlException.php',
|
'PHPUnit\\Util\\Xml\\XmlException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception/XmlException.php',
|
||||||
'ParaTest\\Coverage\\CoverageMerger' => __DIR__ . '/..' . '/brianium/paratest/src/Coverage/CoverageMerger.php',
|
'ParaTest\\Coverage\\CoverageMerger' => __DIR__ . '/..' . '/brianium/paratest/src/Coverage/CoverageMerger.php',
|
||||||
'ParaTest\\JUnit\\LogMerger' => __DIR__ . '/..' . '/brianium/paratest/src/JUnit/LogMerger.php',
|
'ParaTest\\JUnit\\LogMerger' => __DIR__ . '/..' . '/brianium/paratest/src/JUnit/LogMerger.php',
|
||||||
@@ -5499,6 +5597,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'ParaTest\\RunnerInterface' => __DIR__ . '/..' . '/brianium/paratest/src/RunnerInterface.php',
|
'ParaTest\\RunnerInterface' => __DIR__ . '/..' . '/brianium/paratest/src/RunnerInterface.php',
|
||||||
'ParaTest\\Util\\PhpstormHelper' => __DIR__ . '/..' . '/brianium/paratest/src/Util/PhpstormHelper.php',
|
'ParaTest\\Util\\PhpstormHelper' => __DIR__ . '/..' . '/brianium/paratest/src/Util/PhpstormHelper.php',
|
||||||
'ParaTest\\WrapperRunner\\ApplicationForWrapperWorker' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/ApplicationForWrapperWorker.php',
|
'ParaTest\\WrapperRunner\\ApplicationForWrapperWorker' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/ApplicationForWrapperWorker.php',
|
||||||
|
'ParaTest\\WrapperRunner\\ProgressPrinterOutput' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/ProgressPrinterOutput.php',
|
||||||
'ParaTest\\WrapperRunner\\ResultPrinter' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/ResultPrinter.php',
|
'ParaTest\\WrapperRunner\\ResultPrinter' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/ResultPrinter.php',
|
||||||
'ParaTest\\WrapperRunner\\SuiteLoader' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/SuiteLoader.php',
|
'ParaTest\\WrapperRunner\\SuiteLoader' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/SuiteLoader.php',
|
||||||
'ParaTest\\WrapperRunner\\WorkerCrashedException' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/WorkerCrashedException.php',
|
'ParaTest\\WrapperRunner\\WorkerCrashedException' => __DIR__ . '/..' . '/brianium/paratest/src/WrapperRunner/WorkerCrashedException.php',
|
||||||
@@ -5545,6 +5644,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
|
'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
|
||||||
'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
|
||||||
'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
|
'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
|
||||||
|
'PharIo\\Manifest\\NoEmailAddressException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/NoEmailAddressException.php',
|
||||||
'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
|
'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
|
||||||
'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
|
||||||
'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
|
||||||
@@ -6325,6 +6425,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
|
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php',
|
'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotEnabledException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
|
'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
|
||||||
|
'SebastianBergmann\\CodeCoverage\\FileCouldNotBeWrittenException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/FileCouldNotBeWrittenException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
|
'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
|
'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
|
||||||
'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
|
'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
|
||||||
@@ -6794,6 +6895,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php',
|
'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php',
|
||||||
'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php',
|
'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php',
|
||||||
'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php',
|
'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php',
|
||||||
|
'Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php',
|
||||||
'Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php',
|
'Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php',
|
||||||
'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php',
|
'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php',
|
||||||
'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php',
|
'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php',
|
||||||
@@ -6803,12 +6905,15 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php',
|
'Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php',
|
||||||
'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php',
|
'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php',
|
||||||
'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php',
|
'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php',
|
||||||
|
'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php',
|
||||||
|
'Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php',
|
||||||
'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
|
'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php',
|
'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php',
|
'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php',
|
||||||
|
'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php',
|
'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php',
|
||||||
'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php',
|
'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php',
|
||||||
@@ -6824,6 +6929,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php',
|
'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php',
|
||||||
'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php',
|
'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php',
|
||||||
'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php',
|
'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php',
|
||||||
|
'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php',
|
||||||
'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php',
|
'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php',
|
||||||
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php',
|
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php',
|
||||||
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
|
'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php',
|
||||||
@@ -6853,6 +6959,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php',
|
'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php',
|
||||||
'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php',
|
'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php',
|
||||||
'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php',
|
'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php',
|
||||||
|
'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => __DIR__ . '/..' . '/symfony/console/Helper/TerminalInputHelper.php',
|
||||||
'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php',
|
'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php',
|
||||||
'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php',
|
'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php',
|
||||||
'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php',
|
'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php',
|
||||||
@@ -6864,6 +6971,9 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php',
|
'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php',
|
||||||
'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php',
|
'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php',
|
||||||
'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php',
|
'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php',
|
||||||
|
'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php',
|
||||||
|
'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php',
|
||||||
|
'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php',
|
||||||
'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php',
|
'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php',
|
||||||
'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php',
|
'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php',
|
||||||
'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php',
|
'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php',
|
||||||
@@ -6877,6 +6987,7 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php',
|
'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php',
|
||||||
'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php',
|
'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php',
|
||||||
'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php',
|
'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php',
|
||||||
|
'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php',
|
||||||
'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php',
|
'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php',
|
||||||
'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php',
|
'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php',
|
||||||
'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php',
|
'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php',
|
||||||
@@ -7385,11 +7496,16 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php',
|
'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php',
|
||||||
'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php',
|
'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php',
|
||||||
'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php',
|
'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php',
|
||||||
|
'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php',
|
||||||
'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php',
|
'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php',
|
||||||
'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php',
|
'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php',
|
||||||
'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php',
|
'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php',
|
||||||
|
'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php',
|
||||||
|
'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php',
|
||||||
|
'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php',
|
||||||
'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php',
|
'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php',
|
||||||
'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php',
|
'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php',
|
||||||
|
'Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php',
|
||||||
'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php',
|
'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php',
|
||||||
'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php',
|
'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php',
|
||||||
'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php',
|
'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php',
|
||||||
@@ -7472,9 +7588,11 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php',
|
'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php',
|
||||||
'Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php',
|
'Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php',
|
||||||
'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php',
|
'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php',
|
||||||
|
'Symfony\\Component\\String\\Inflector\\SpanishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/SpanishInflector.php',
|
||||||
'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php',
|
'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php',
|
||||||
'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php',
|
'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php',
|
||||||
'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php',
|
'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php',
|
||||||
|
'Symfony\\Component\\String\\TruncateMode' => __DIR__ . '/..' . '/symfony/string/TruncateMode.php',
|
||||||
'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php',
|
'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php',
|
||||||
'Symfony\\Component\\Translation\\CatalogueMetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/CatalogueMetadataAwareInterface.php',
|
'Symfony\\Component\\Translation\\CatalogueMetadataAwareInterface' => __DIR__ . '/..' . '/symfony/translation/CatalogueMetadataAwareInterface.php',
|
||||||
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/AbstractOperation.php',
|
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => __DIR__ . '/..' . '/symfony/translation/Catalogue/AbstractOperation.php',
|
||||||
@@ -7675,8 +7793,12 @@ class ComposerStaticInit0a39803e5364a51c44275cdfc5d8af8d
|
|||||||
'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php',
|
'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php',
|
'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php',
|
||||||
'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php',
|
'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ContainerAwareInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ContainerAwareInterface.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ContainerProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ContainerProviderInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php',
|
'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ServiceCollectionInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceCollectionInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php',
|
'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php',
|
||||||
|
'Symfony\\Contracts\\Service\\ServiceMethodsSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceMethodsSubscriberTrait.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php',
|
'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php',
|
'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php',
|
||||||
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
|
'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php',
|
||||||
|
|||||||
Vendored
+519
-453
File diff suppressed because it is too large
Load Diff
Vendored
+123
-123
@@ -3,7 +3,7 @@
|
|||||||
'name' => 'loshmis/vanguard',
|
'name' => 'loshmis/vanguard',
|
||||||
'pretty_version' => 'dev-master',
|
'pretty_version' => 'dev-master',
|
||||||
'version' => 'dev-master',
|
'version' => 'dev-master',
|
||||||
'reference' => 'f7301024bc22b755aa9be32157a3f6184e380dfa',
|
'reference' => '1ede9cc3af1f9af71f39bf845682059fb4c18431',
|
||||||
'type' => 'project',
|
'type' => 'project',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -56,9 +56,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'brianium/paratest' => array(
|
'brianium/paratest' => array(
|
||||||
'pretty_version' => 'v7.1.1',
|
'pretty_version' => 'v7.4.9',
|
||||||
'version' => '7.1.1.0',
|
'version' => '7.4.9.0',
|
||||||
'reference' => 'abc123183e90f33ce1312b5bfaa49d80d8c646b2',
|
'reference' => '633c0987ecf6d9b057431225da37b088aa9274a5',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../brianium/paratest',
|
'install_path' => __DIR__ . '/../brianium/paratest',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../cakephp/chronos',
|
'install_path' => __DIR__ . '/../cakephp/chronos',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'cakephp/core' => array(
|
'cakephp/core' => array(
|
||||||
'pretty_version' => '5.4.1',
|
'pretty_version' => '5.4.1',
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../cakephp/core',
|
'install_path' => __DIR__ . '/../cakephp/core',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'cakephp/database' => array(
|
'cakephp/database' => array(
|
||||||
'pretty_version' => '5.4.1',
|
'pretty_version' => '5.4.1',
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../cakephp/database',
|
'install_path' => __DIR__ . '/../cakephp/database',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'cakephp/datasource' => array(
|
'cakephp/datasource' => array(
|
||||||
'pretty_version' => '5.4.1',
|
'pretty_version' => '5.4.1',
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../cakephp/datasource',
|
'install_path' => __DIR__ . '/../cakephp/datasource',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'cakephp/event' => array(
|
'cakephp/event' => array(
|
||||||
'pretty_version' => '5.4.1',
|
'pretty_version' => '5.4.1',
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../cakephp/event',
|
'install_path' => __DIR__ . '/../cakephp/event',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'cakephp/utility' => array(
|
'cakephp/utility' => array(
|
||||||
'pretty_version' => '5.4.1',
|
'pretty_version' => '5.4.1',
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../cakephp/utility',
|
'install_path' => __DIR__ . '/../cakephp/utility',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'composer/class-map-generator' => array(
|
'composer/class-map-generator' => array(
|
||||||
'pretty_version' => '1.0.0',
|
'pretty_version' => '1.0.0',
|
||||||
@@ -158,9 +158,9 @@
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
'dflydev/dot-access-data' => array(
|
'dflydev/dot-access-data' => array(
|
||||||
'pretty_version' => 'v3.0.2',
|
'pretty_version' => 'v3.0.3',
|
||||||
'version' => '3.0.2.0',
|
'version' => '3.0.3.0',
|
||||||
'reference' => 'f41715465d65213d644d3141a6a93081be5d3549',
|
'reference' => 'a23a2bf4f31d3518f3ecb38660c95715dfead60f',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../dflydev/dot-access-data',
|
'install_path' => __DIR__ . '/../dflydev/dot-access-data',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -248,9 +248,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'fidry/cpu-core-counter' => array(
|
'fidry/cpu-core-counter' => array(
|
||||||
'pretty_version' => '0.5.1',
|
'pretty_version' => '1.3.0',
|
||||||
'version' => '0.5.1.0',
|
'version' => '1.3.0.0',
|
||||||
'reference' => 'b58e5a3933e541dc286cc91fc4f3898bbc6f1623',
|
'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../fidry/cpu-core-counter',
|
'install_path' => __DIR__ . '/../fidry/cpu-core-counter',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -545,9 +545,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'jean85/pretty-package-versions' => array(
|
'jean85/pretty-package-versions' => array(
|
||||||
'pretty_version' => '2.0.5',
|
'pretty_version' => '2.1.1',
|
||||||
'version' => '2.0.5.0',
|
'version' => '2.1.1.0',
|
||||||
'reference' => 'ae547e455a3d8babd07b96966b17d7fd21d9c6af',
|
'reference' => '4d7aa5dab42e2a76d99559706022885de0e18e1a',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../jean85/pretty-package-versions',
|
'install_path' => __DIR__ . '/../jean85/pretty-package-versions',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -674,7 +674,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../league/container',
|
'install_path' => __DIR__ . '/../league/container',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'league/flysystem' => array(
|
'league/flysystem' => array(
|
||||||
'pretty_version' => '3.12.3',
|
'pretty_version' => '3.12.3',
|
||||||
@@ -706,7 +706,7 @@
|
|||||||
'loshmis/vanguard' => array(
|
'loshmis/vanguard' => array(
|
||||||
'pretty_version' => 'dev-master',
|
'pretty_version' => 'dev-master',
|
||||||
'version' => 'dev-master',
|
'version' => 'dev-master',
|
||||||
'reference' => 'f7301024bc22b755aa9be32157a3f6184e380dfa',
|
'reference' => '1ede9cc3af1f9af71f39bf845682059fb4c18431',
|
||||||
'type' => 'project',
|
'type' => 'project',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -755,9 +755,9 @@
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
'myclabs/deep-copy' => array(
|
'myclabs/deep-copy' => array(
|
||||||
'pretty_version' => '1.11.1',
|
'pretty_version' => '1.13.4',
|
||||||
'version' => '1.11.1.0',
|
'version' => '1.13.4.0',
|
||||||
'reference' => '7284c22080590fb39f2ffa3e9057f10a4ddd0e0c',
|
'reference' => '07d290f0c47959fd5eed98c95ee5602db07e0b6a',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../myclabs/deep-copy',
|
'install_path' => __DIR__ . '/../myclabs/deep-copy',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -773,27 +773,27 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'nette/schema' => array(
|
'nette/schema' => array(
|
||||||
'pretty_version' => 'v1.2.3',
|
'pretty_version' => 'v1.3.5',
|
||||||
'version' => '1.2.3.0',
|
'version' => '1.3.5.0',
|
||||||
'reference' => 'abbdbb70e0245d5f3bf77874cea1dfb0c930d06f',
|
'reference' => 'f0ab1a3cda782dbc5da270d28545236aa80c4002',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../nette/schema',
|
'install_path' => __DIR__ . '/../nette/schema',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'nette/utils' => array(
|
'nette/utils' => array(
|
||||||
'pretty_version' => 'v4.0.0',
|
'pretty_version' => 'v4.1.5',
|
||||||
'version' => '4.0.0.0',
|
'version' => '4.1.5.0',
|
||||||
'reference' => 'cacdbf5a91a657ede665c541eda28941d4b09c1e',
|
'reference' => 'b043439dbdf954e6c28b5ea7e34b0100f83165e0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../nette/utils',
|
'install_path' => __DIR__ . '/../nette/utils',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'nikic/php-parser' => array(
|
'nikic/php-parser' => array(
|
||||||
'pretty_version' => 'v4.15.4',
|
'pretty_version' => 'v4.19.5',
|
||||||
'version' => '4.15.4.0',
|
'version' => '4.19.5.0',
|
||||||
'reference' => '6bb5176bc4af8bcb7d926f88718db9b96a2d4290',
|
'reference' => '51bd93cc741b7fc3d63d20b6bdcd99fdaa359837',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../nikic/php-parser',
|
'install_path' => __DIR__ . '/../nikic/php-parser',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -818,15 +818,15 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'orno/di' => array(
|
'orno/di' => array(
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
'replaced' => array(
|
'replaced' => array(
|
||||||
0 => '~2.0',
|
0 => '~2.0',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'phar-io/manifest' => array(
|
'phar-io/manifest' => array(
|
||||||
'pretty_version' => '2.0.3',
|
'pretty_version' => '2.0.4',
|
||||||
'version' => '2.0.3.0',
|
'version' => '2.0.4.0',
|
||||||
'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
|
'reference' => '54750ef60c58e43759730615a392c31c80e23176',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phar-io/manifest',
|
'install_path' => __DIR__ . '/../phar-io/manifest',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -878,18 +878,18 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'phpunit/php-code-coverage' => array(
|
'phpunit/php-code-coverage' => array(
|
||||||
'pretty_version' => '10.0.2',
|
'pretty_version' => '10.1.16',
|
||||||
'version' => '10.0.2.0',
|
'version' => '10.1.16.0',
|
||||||
'reference' => '20800e84296ea4732f9a125e08ce86b4004ae3e4',
|
'reference' => '7e308268858ed6baedc8704a304727d20bc07c77',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
|
'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpunit/php-file-iterator' => array(
|
'phpunit/php-file-iterator' => array(
|
||||||
'pretty_version' => '4.0.1',
|
'pretty_version' => '4.1.0',
|
||||||
'version' => '4.0.1.0',
|
'version' => '4.1.0.0',
|
||||||
'reference' => 'fd9329ab3368f59fe1fe808a189c51086bd4b6bd',
|
'reference' => 'a95037b6d9e608ba092da1b23931e537cadc3c3c',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
|
'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -905,9 +905,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpunit/php-text-template' => array(
|
'phpunit/php-text-template' => array(
|
||||||
'pretty_version' => '3.0.0',
|
'pretty_version' => '3.0.1',
|
||||||
'version' => '3.0.0.0',
|
'version' => '3.0.1.0',
|
||||||
'reference' => '9f3d3709577a527025f55bcf0f7ab8052c8bb37d',
|
'reference' => '0c7b06ff49e3d5072f057eb1fa59258bf287a748',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpunit/php-text-template',
|
'install_path' => __DIR__ . '/../phpunit/php-text-template',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -923,9 +923,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpunit/phpunit' => array(
|
'phpunit/phpunit' => array(
|
||||||
'pretty_version' => '10.0.16',
|
'pretty_version' => '10.5.64',
|
||||||
'version' => '10.0.16.0',
|
'version' => '10.5.64.0',
|
||||||
'reference' => '07d386a11ac7094032900f07cada1c8975d16607',
|
'reference' => '0e8c1d19cea35ad97d4887f363d07c78e30fbf06',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpunit/phpunit',
|
'install_path' => __DIR__ . '/../phpunit/phpunit',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -956,10 +956,10 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../psr/clock',
|
'install_path' => __DIR__ . '/../psr/clock',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'psr/clock-implementation' => array(
|
'psr/clock-implementation' => array(
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
'provided' => array(
|
'provided' => array(
|
||||||
0 => '1.0',
|
0 => '1.0',
|
||||||
),
|
),
|
||||||
@@ -1042,9 +1042,9 @@
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
'psr/log' => array(
|
'psr/log' => array(
|
||||||
'pretty_version' => '3.0.0',
|
'pretty_version' => '3.0.2',
|
||||||
'version' => '3.0.0.0',
|
'version' => '3.0.2.0',
|
||||||
'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
|
'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../psr/log',
|
'install_path' => __DIR__ . '/../psr/log',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1121,12 +1121,12 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../robmorgan/phinx',
|
'install_path' => __DIR__ . '/../robmorgan/phinx',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'sebastian/cli-parser' => array(
|
'sebastian/cli-parser' => array(
|
||||||
'pretty_version' => '2.0.0',
|
'pretty_version' => '2.0.1',
|
||||||
'version' => '2.0.0.0',
|
'version' => '2.0.1.0',
|
||||||
'reference' => 'efdc130dbbbb8ef0b545a994fd811725c5282cae',
|
'reference' => 'c34583b87e7b7a8055bf6c450c2c77ce32a24084',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/cli-parser',
|
'install_path' => __DIR__ . '/../sebastian/cli-parser',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1151,63 +1151,63 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/comparator' => array(
|
'sebastian/comparator' => array(
|
||||||
'pretty_version' => '5.0.0',
|
'pretty_version' => '5.0.5',
|
||||||
'version' => '5.0.0.0',
|
'version' => '5.0.5.0',
|
||||||
'reference' => '72f01e6586e0caf6af81297897bd112eb7e9627c',
|
'reference' => '55dfef806eb7dfeb6e7a6935601fef866f8ca48d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/comparator',
|
'install_path' => __DIR__ . '/../sebastian/comparator',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/complexity' => array(
|
'sebastian/complexity' => array(
|
||||||
'pretty_version' => '3.0.0',
|
'pretty_version' => '3.2.0',
|
||||||
'version' => '3.0.0.0',
|
'version' => '3.2.0.0',
|
||||||
'reference' => 'e67d240970c9dc7ea7b2123a6d520e334dd61dc6',
|
'reference' => '68ff824baeae169ec9f2137158ee529584553799',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/complexity',
|
'install_path' => __DIR__ . '/../sebastian/complexity',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/diff' => array(
|
'sebastian/diff' => array(
|
||||||
'pretty_version' => '5.0.0',
|
'pretty_version' => '5.1.1',
|
||||||
'version' => '5.0.0.0',
|
'version' => '5.1.1.0',
|
||||||
'reference' => '70dd1b20bc198da394ad542e988381b44e64e39f',
|
'reference' => 'c41e007b4b62af48218231d6c2275e4c9b975b2e',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/diff',
|
'install_path' => __DIR__ . '/../sebastian/diff',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/environment' => array(
|
'sebastian/environment' => array(
|
||||||
'pretty_version' => '6.0.0',
|
'pretty_version' => '6.1.0',
|
||||||
'version' => '6.0.0.0',
|
'version' => '6.1.0.0',
|
||||||
'reference' => 'b6f3694c6386c7959915a0037652e0c40f6f69cc',
|
'reference' => '8074dbcd93529b357029f5cc5058fd3e43666984',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/environment',
|
'install_path' => __DIR__ . '/../sebastian/environment',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/exporter' => array(
|
'sebastian/exporter' => array(
|
||||||
'pretty_version' => '5.0.0',
|
'pretty_version' => '5.1.4',
|
||||||
'version' => '5.0.0.0',
|
'version' => '5.1.4.0',
|
||||||
'reference' => 'f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0',
|
'reference' => '0735b90f4da94969541dac1da743446e276defa6',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/exporter',
|
'install_path' => __DIR__ . '/../sebastian/exporter',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/global-state' => array(
|
'sebastian/global-state' => array(
|
||||||
'pretty_version' => '6.0.0',
|
'pretty_version' => '6.0.2',
|
||||||
'version' => '6.0.0.0',
|
'version' => '6.0.2.0',
|
||||||
'reference' => 'aab257c712de87b90194febd52e4d184551c2d44',
|
'reference' => '987bafff24ecc4c9ac418cab1145b96dd6e9cbd9',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/global-state',
|
'install_path' => __DIR__ . '/../sebastian/global-state',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/lines-of-code' => array(
|
'sebastian/lines-of-code' => array(
|
||||||
'pretty_version' => '2.0.0',
|
'pretty_version' => '2.0.2',
|
||||||
'version' => '2.0.0.0',
|
'version' => '2.0.2.0',
|
||||||
'reference' => '17c4d940ecafb3d15d2cf916f4108f664e28b130',
|
'reference' => '856e7f6a75a84e339195d48c556f23be2ebf75d0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/lines-of-code',
|
'install_path' => __DIR__ . '/../sebastian/lines-of-code',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1232,9 +1232,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/recursion-context' => array(
|
'sebastian/recursion-context' => array(
|
||||||
'pretty_version' => '5.0.0',
|
'pretty_version' => '5.0.1',
|
||||||
'version' => '5.0.0.0',
|
'version' => '5.0.1.0',
|
||||||
'reference' => '05909fb5bc7df4c52992396d0116aed689f93712',
|
'reference' => '47e34210757a2f37a97dcd207d032e1b01e64c7a',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/recursion-context',
|
'install_path' => __DIR__ . '/../sebastian/recursion-context',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1319,12 +1319,12 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/config',
|
'install_path' => __DIR__ . '/../symfony/config',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/console' => array(
|
'symfony/console' => array(
|
||||||
'pretty_version' => 'v6.2.7',
|
'pretty_version' => 'v6.4.43',
|
||||||
'version' => '6.2.7.0',
|
'version' => '6.4.43.0',
|
||||||
'reference' => 'cbad09eb8925b6ad4fb721c7a179344dc4a19d45',
|
'reference' => '3b643aa587acbc42f967a429af088a56ed8f046d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/console',
|
'install_path' => __DIR__ . '/../symfony/console',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1340,9 +1340,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/deprecation-contracts' => array(
|
'symfony/deprecation-contracts' => array(
|
||||||
'pretty_version' => 'v3.2.1',
|
'pretty_version' => 'v3.7.1',
|
||||||
'version' => '3.2.1.0',
|
'version' => '3.7.1.0',
|
||||||
'reference' => 'e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e',
|
'reference' => 'f3202fa1b5097b0af062dc978b32ecf63404e31d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1367,9 +1367,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/event-dispatcher-contracts' => array(
|
'symfony/event-dispatcher-contracts' => array(
|
||||||
'pretty_version' => 'v3.2.1',
|
'pretty_version' => 'v3.7.1',
|
||||||
'version' => '3.2.1.0',
|
'version' => '3.7.1.0',
|
||||||
'reference' => '0ad3b6f1e4e2da5690fefe075cd53a238646d8dd',
|
'reference' => 'c7de7a00ffb67842132da02ea92988a39ccd9f4e',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts',
|
'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1388,7 +1388,7 @@
|
|||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/filesystem',
|
'install_path' => __DIR__ . '/../symfony/filesystem',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/finder' => array(
|
'symfony/finder' => array(
|
||||||
'pretty_version' => 'v6.2.7',
|
'pretty_version' => 'v6.2.7',
|
||||||
@@ -1436,18 +1436,18 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-ctype' => array(
|
'symfony/polyfill-ctype' => array(
|
||||||
'pretty_version' => 'v1.27.0',
|
'pretty_version' => 'v1.37.0',
|
||||||
'version' => '1.27.0.0',
|
'version' => '1.37.0.0',
|
||||||
'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a',
|
'reference' => '141046a8f9477948ff284fa65be2095baafb94f2',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-intl-grapheme' => array(
|
'symfony/polyfill-intl-grapheme' => array(
|
||||||
'pretty_version' => 'v1.27.0',
|
'pretty_version' => 'v1.41.0',
|
||||||
'version' => '1.27.0.0',
|
'version' => '1.41.0.0',
|
||||||
'reference' => '511a08c03c1960e08a883f4cffcacd219b758354',
|
'reference' => 'bb899c1db0aa8127dc3afe8cda4a67eb24915f8d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme',
|
'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1463,18 +1463,18 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-intl-normalizer' => array(
|
'symfony/polyfill-intl-normalizer' => array(
|
||||||
'pretty_version' => 'v1.27.0',
|
'pretty_version' => 'v1.38.0',
|
||||||
'version' => '1.27.0.0',
|
'version' => '1.38.0.0',
|
||||||
'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6',
|
'reference' => '2d446c214bdbe5b71bde5011b060a05fece3ae6b',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
|
'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-mbstring' => array(
|
'symfony/polyfill-mbstring' => array(
|
||||||
'pretty_version' => 'v1.27.0',
|
'pretty_version' => 'v1.38.2',
|
||||||
'version' => '1.27.0.0',
|
'version' => '1.38.2.0',
|
||||||
'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534',
|
'reference' => 'd3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
|
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1490,9 +1490,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-php80' => array(
|
'symfony/polyfill-php80' => array(
|
||||||
'pretty_version' => 'v1.27.0',
|
'pretty_version' => 'v1.37.0',
|
||||||
'version' => '1.27.0.0',
|
'version' => '1.37.0.0',
|
||||||
'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936',
|
'reference' => 'dfb55726c3a76ea3b6459fcfda1ec2d80a682411',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-php80',
|
'install_path' => __DIR__ . '/../symfony/polyfill-php80',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1508,9 +1508,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/process' => array(
|
'symfony/process' => array(
|
||||||
'pretty_version' => 'v6.2.7',
|
'pretty_version' => 'v6.4.41',
|
||||||
'version' => '6.2.7.0',
|
'version' => '6.4.41.0',
|
||||||
'reference' => '680e8a2ea6b3f87aecc07a6a65a203ae573d1902',
|
'reference' => 'c8fc09bdfe9fde9aaa89b415a4477feaccec16a7',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/process',
|
'install_path' => __DIR__ . '/../symfony/process',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1526,18 +1526,18 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/service-contracts' => array(
|
'symfony/service-contracts' => array(
|
||||||
'pretty_version' => 'v3.2.1',
|
'pretty_version' => 'v3.7.1',
|
||||||
'version' => '3.2.1.0',
|
'version' => '3.7.1.0',
|
||||||
'reference' => 'a8c9cedf55f314f3a186041d19537303766df09a',
|
'reference' => 'c0a284bab1ed8aa0417e3d69250ab437739563a0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/service-contracts',
|
'install_path' => __DIR__ . '/../symfony/service-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/string' => array(
|
'symfony/string' => array(
|
||||||
'pretty_version' => 'v6.2.7',
|
'pretty_version' => 'v7.4.15',
|
||||||
'version' => '6.2.7.0',
|
'version' => '7.4.15.0',
|
||||||
'reference' => '67b8c1eec78296b85dc1c7d9743830160218993d',
|
'reference' => 'e394af32256bf9e7bf80849d95e589167c10097b',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/string',
|
'install_path' => __DIR__ . '/../symfony/string',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1553,9 +1553,9 @@
|
|||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'symfony/translation-contracts' => array(
|
'symfony/translation-contracts' => array(
|
||||||
'pretty_version' => 'v3.2.1',
|
'pretty_version' => 'v3.7.1',
|
||||||
'version' => '3.2.1.0',
|
'version' => '3.7.1.0',
|
||||||
'reference' => 'dfec258b9dd17a6b24420d464c43bffe347441c8',
|
'reference' => 'ccb206b98faccc511ebae8e5fad50f2dc0b30621',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/translation-contracts',
|
'install_path' => __DIR__ . '/../symfony/translation-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -1595,9 +1595,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'theseer/tokenizer' => array(
|
'theseer/tokenizer' => array(
|
||||||
'pretty_version' => '1.2.1',
|
'pretty_version' => '1.3.1',
|
||||||
'version' => '1.2.1.0',
|
'version' => '1.3.1.0',
|
||||||
'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
|
'reference' => 'b7489ce515e168639d17feec34b8847c326b0b3c',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../theseer/tokenizer',
|
'install_path' => __DIR__ . '/../theseer/tokenizer',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|||||||
Vendored
+6
-2
@@ -4,8 +4,12 @@
|
|||||||
|
|
||||||
$issues = array();
|
$issues = array();
|
||||||
|
|
||||||
if (!(PHP_VERSION_ID >= 80100)) {
|
if (!(PHP_VERSION_ID >= 80200)) {
|
||||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.';
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.2.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PHP_INT_SIZE !== 8) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a 64-bit build of PHP.';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($issues) {
|
if ($issues) {
|
||||||
|
|||||||
+8
-1
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [3.0.3] - 2024-07-08
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed PHP 8.4 deprecation notices (#47)
|
||||||
|
|
||||||
## [3.0.2] - 2022-10-27
|
## [3.0.2] - 2022-10-27
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
@@ -57,7 +63,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
**Initial release!**
|
**Initial release!**
|
||||||
|
|
||||||
[Unreleased]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.2...main
|
[Unreleased]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.3...main
|
||||||
|
[3.0.3]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.2...v3.0.3
|
||||||
[3.0.2]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.1...v3.0.2
|
[3.0.2]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.1...v3.0.2
|
||||||
[3.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.0...v3.0.1
|
[3.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.0...v3.0.1
|
||||||
[3.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v2.0.0...v3.0.0
|
[3.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v2.0.0...v3.0.0
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class MissingPathException extends DataException
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
protected $path;
|
protected $path;
|
||||||
|
|
||||||
public function __construct(string $path, string $message = '', int $code = 0, Throwable $previous = null)
|
public function __construct(string $path, string $message = '', int $code = 0, ?Throwable $previous = null)
|
||||||
{
|
{
|
||||||
$this->path = $path;
|
$this->path = $path;
|
||||||
|
|
||||||
|
|||||||
+34
-10
@@ -16,6 +16,10 @@ use Fidry\CpuCoreCounter\Finder\DummyCpuCoreFinder;
|
|||||||
|
|
||||||
$counter = new CpuCoreCounter();
|
$counter = new CpuCoreCounter();
|
||||||
|
|
||||||
|
// For knowing the number of cores you can use for launching parallel processes:
|
||||||
|
$counter->getAvailableForParallelisation()->availableCpus;
|
||||||
|
|
||||||
|
// Get the number of CPU cores (by default it will use the logical cores count):
|
||||||
try {
|
try {
|
||||||
$counter->getCount(); // e.g. 8
|
$counter->getCount(); // e.g. 8
|
||||||
} catch (NumberOfCpuCoreNotFound) {
|
} catch (NumberOfCpuCoreNotFound) {
|
||||||
@@ -29,6 +33,10 @@ $counter = new CpuCoreCounter([
|
|||||||
new DummyCpuCoreFinder(1), // Fallback value
|
new DummyCpuCoreFinder(1), // Fallback value
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// A type-safe alternative form:
|
||||||
|
$counter->getCountWithFallback(1);
|
||||||
|
|
||||||
|
// Note that the result is memoized.
|
||||||
$counter->getCount(); // e.g. 8
|
$counter->getCount(); // e.g. 8
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -68,30 +76,46 @@ $cores = (new CpuCoreCounter($finders))->getCount();
|
|||||||
`FinderRegistry` provides two helpful entries:
|
`FinderRegistry` provides two helpful entries:
|
||||||
|
|
||||||
- `::getDefaultLogicalFinders()`: gives an ordered list of finders that will
|
- `::getDefaultLogicalFinders()`: gives an ordered list of finders that will
|
||||||
look for the _logical_ CPU cores count
|
look for the _logical_ CPU cores count.
|
||||||
- `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will
|
- `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will
|
||||||
look for the _physical_ CPU cores count
|
look for the _physical_ CPU cores count.
|
||||||
|
|
||||||
By default when using `CpuCoreCounter`, it will use the logical finders since
|
By default, when using `CpuCoreCounter`, it will use the logical finders since
|
||||||
it is more likely what you are looking for and is what is used by PHP source to
|
it is more likely what you are looking for and is what is used by PHP source to
|
||||||
build the PHP binary.
|
build the PHP binary.
|
||||||
|
|
||||||
|
|
||||||
### Checks what finders find what on your system
|
### Checks what finders find what on your system
|
||||||
|
|
||||||
You have two commands available that provides insight about what the finders
|
You have three scrips available that provides insight about what the finders
|
||||||
can find:
|
can find:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
$ make diagnosis # From this repository
|
# Checks what each given finder will find on your system with details about the
|
||||||
$ ./vendor/fidry/cpu-core-counter/bin/diagnose.php # From the library
|
# information it had.
|
||||||
|
make diagnose # From this repository
|
||||||
|
./vendor/fidry/cpu-core-counter/bin/diagnose.php # From the library
|
||||||
```
|
```
|
||||||
|
|
||||||
And:
|
And:
|
||||||
|
```shell
|
||||||
|
# Execute all finders and display the result they found.
|
||||||
|
make execute # From this repository
|
||||||
|
./vendor/fidry/cpu-core-counter/bin/execute.php # From the library
|
||||||
```
|
```
|
||||||
$ make execute # From this repository
|
|
||||||
$ ./vendor/fidry/cpu-core-counter/bin/execute.php # From the library
|
|
||||||
```
|
### Debug the results found
|
||||||
|
|
||||||
|
You have 3 methods available to help you find out what happened:
|
||||||
|
|
||||||
|
1. If you are using the default configuration of finder registries, you can check
|
||||||
|
the previous section which will provide plenty of information.
|
||||||
|
2. If what you are interested in is how many CPU cores were found, you can use
|
||||||
|
the `CpuCoreCounter::trace()` method.
|
||||||
|
3. If what you are interested in is how the calculation of CPU cores available
|
||||||
|
for parallelisation was done, you can inspect the values of `ParallelisationResult`
|
||||||
|
returned by `CpuCoreCounter::getAvailableForParallelisation()`.
|
||||||
|
|
||||||
|
|
||||||
## Backward Compatibility Promise (BCP)
|
## Backward Compatibility Promise (BCP)
|
||||||
|
|||||||
@@ -19,3 +19,9 @@ require_once __DIR__.'/../vendor/autoload.php';
|
|||||||
|
|
||||||
echo 'Running diagnosis...'.PHP_EOL.PHP_EOL;
|
echo 'Running diagnosis...'.PHP_EOL.PHP_EOL;
|
||||||
echo Diagnoser::diagnose(FinderRegistry::getAllVariants()).PHP_EOL;
|
echo Diagnoser::diagnose(FinderRegistry::getAllVariants()).PHP_EOL;
|
||||||
|
|
||||||
|
echo 'Logical CPU cores finders...'.PHP_EOL.PHP_EOL;
|
||||||
|
echo Diagnoser::diagnose(FinderRegistry::getDefaultLogicalFinders()).PHP_EOL;
|
||||||
|
|
||||||
|
echo 'Physical CPU cores finders...'.PHP_EOL.PHP_EOL;
|
||||||
|
echo Diagnoser::diagnose(FinderRegistry::getDefaultPhysicalFinders()).PHP_EOL;
|
||||||
|
|||||||
+6
-6
@@ -18,13 +18,13 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fidry/makefile": "^0.2.0",
|
"fidry/makefile": "^0.2.0",
|
||||||
|
"fidry/php-cs-fixer-config": "^1.1.2",
|
||||||
"phpstan/extension-installer": "^1.2.0",
|
"phpstan/extension-installer": "^1.2.0",
|
||||||
"phpstan/phpstan": "^1.9.2",
|
"phpstan/phpstan": "^2.0",
|
||||||
"phpstan/phpstan-deprecation-rules": "^1.0.0",
|
"phpstan/phpstan-deprecation-rules": "^2.0.0",
|
||||||
"phpstan/phpstan-phpunit": "^1.2.2",
|
"phpstan/phpstan-phpunit": "^2.0",
|
||||||
"phpstan/phpstan-strict-rules": "^1.4.4",
|
"phpstan/phpstan-strict-rules": "^2.0",
|
||||||
"phpunit/phpunit": "^9.5.26 || ^8.5.31",
|
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
|
||||||
"theofidry/php-cs-fixer-config": "^1.0",
|
|
||||||
"webmozarts/strict-phpunit": "^7.5"
|
"webmozarts/strict-phpunit": "^7.5"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|||||||
@@ -14,7 +14,14 @@ declare(strict_types=1);
|
|||||||
namespace Fidry\CpuCoreCounter;
|
namespace Fidry\CpuCoreCounter;
|
||||||
|
|
||||||
use Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
|
use Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
|
||||||
|
use Fidry\CpuCoreCounter\Finder\EnvVariableFinder;
|
||||||
use Fidry\CpuCoreCounter\Finder\FinderRegistry;
|
use Fidry\CpuCoreCounter\Finder\FinderRegistry;
|
||||||
|
use InvalidArgumentException;
|
||||||
|
use function implode;
|
||||||
|
use function max;
|
||||||
|
use function sprintf;
|
||||||
|
use function sys_getloadavg;
|
||||||
|
use const PHP_EOL;
|
||||||
|
|
||||||
final class CpuCoreCounter
|
final class CpuCoreCounter
|
||||||
{
|
{
|
||||||
@@ -36,6 +43,91 @@ final class CpuCoreCounter
|
|||||||
$this->finders = $finders ?? FinderRegistry::getDefaultLogicalFinders();
|
$this->finders = $finders ?? FinderRegistry::getDefaultLogicalFinders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param positive-int|0 $reservedCpus Number of CPUs to reserve. This is useful when you want
|
||||||
|
* to reserve some CPUs for other processes. If the main
|
||||||
|
* process is going to be busy still, you may want to set
|
||||||
|
* this value to 1.
|
||||||
|
* @param non-zero-int|null $countLimit The maximum number of CPUs to return. If not provided, it
|
||||||
|
* may look for a limit in the environment variables, e.g.
|
||||||
|
* KUBERNETES_CPU_LIMIT. If negative, the limit will be
|
||||||
|
* the total number of cores found minus the absolute value.
|
||||||
|
* For instance if the system has 10 cores and countLimit=-2,
|
||||||
|
* then the effective limit considered will be 8.
|
||||||
|
* @param float|null $loadLimit Element of [0., 1.]. Percentage representing the
|
||||||
|
* amount of cores that should be used among the available
|
||||||
|
* resources. For instance, if set to 0.7, it will use 70%
|
||||||
|
* of the available cores, i.e. if 1 core is reserved, 11
|
||||||
|
* cores are available and 5 are busy, it will use 70%
|
||||||
|
* of (11-1-5)=5 cores, so 3 cores. Set this parameter to null
|
||||||
|
* to skip this check. Beware that 1 does not mean "no limit",
|
||||||
|
* but 100% of the _available_ resources, i.e. with the
|
||||||
|
* previous example, it will return 5 cores. How busy is
|
||||||
|
* the system is determined by the system load average
|
||||||
|
* (see $systemLoadAverage).
|
||||||
|
* @param float|null $systemLoadAverage The system load average. If passed, it will use
|
||||||
|
* this information to limit the available cores based
|
||||||
|
* on the _available_ resources. For instance, if there
|
||||||
|
* is 10 cores but 3 are busy, then only 7 cores will
|
||||||
|
* be considered for further calculation. If set to
|
||||||
|
* `null`, it will use `sys_getloadavg()` to check the
|
||||||
|
* load of the system in the past minute. You can
|
||||||
|
* otherwise pass an arbitrary value. Should be a
|
||||||
|
* positive float.
|
||||||
|
*
|
||||||
|
* @see https://php.net/manual/en/function.sys-getloadavg.php
|
||||||
|
*/
|
||||||
|
public function getAvailableForParallelisation(
|
||||||
|
int $reservedCpus = 0,
|
||||||
|
?int $countLimit = null,
|
||||||
|
?float $loadLimit = null,
|
||||||
|
?float $systemLoadAverage = 0.
|
||||||
|
): ParallelisationResult {
|
||||||
|
self::checkCountLimit($countLimit);
|
||||||
|
self::checkLoadLimit($loadLimit);
|
||||||
|
self::checkSystemLoadAverage($systemLoadAverage);
|
||||||
|
|
||||||
|
$totalCoreCount = $this->getCountWithFallback(1);
|
||||||
|
$availableCores = max(1, $totalCoreCount - $reservedCpus);
|
||||||
|
|
||||||
|
// Adjust available CPUs based on current load
|
||||||
|
if (null !== $loadLimit) {
|
||||||
|
// https://github.com/phpstan/phpstan/issues/13198
|
||||||
|
/** @var float $correctedSystemLoadAverage */
|
||||||
|
$correctedSystemLoadAverage = null === $systemLoadAverage
|
||||||
|
? sys_getloadavg()[0] ?? 0.
|
||||||
|
: $systemLoadAverage;
|
||||||
|
|
||||||
|
$availableCores = max(
|
||||||
|
1,
|
||||||
|
$loadLimit * ($availableCores - $correctedSystemLoadAverage)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === $countLimit) {
|
||||||
|
$correctedCountLimit = self::getKubernetesLimit();
|
||||||
|
} else {
|
||||||
|
$correctedCountLimit = $countLimit > 0
|
||||||
|
? $countLimit
|
||||||
|
: max(1, $totalCoreCount + $countLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $correctedCountLimit && $availableCores > $correctedCountLimit) {
|
||||||
|
$availableCores = $correctedCountLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ParallelisationResult(
|
||||||
|
$reservedCpus,
|
||||||
|
$countLimit,
|
||||||
|
$loadLimit,
|
||||||
|
$systemLoadAverage,
|
||||||
|
$correctedCountLimit,
|
||||||
|
$correctedSystemLoadAverage ?? $systemLoadAverage,
|
||||||
|
$totalCoreCount,
|
||||||
|
(int) $availableCores
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws NumberOfCpuCoreNotFound
|
* @throws NumberOfCpuCoreNotFound
|
||||||
*
|
*
|
||||||
@@ -51,6 +143,48 @@ final class CpuCoreCounter
|
|||||||
return $this->count;
|
return $this->count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param positive-int $fallback
|
||||||
|
*
|
||||||
|
* @return positive-int
|
||||||
|
*/
|
||||||
|
public function getCountWithFallback(int $fallback): int
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return $this->getCount();
|
||||||
|
} catch (NumberOfCpuCoreNotFound $exception) {
|
||||||
|
return $fallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is mostly for debugging purposes.
|
||||||
|
*/
|
||||||
|
public function trace(): string
|
||||||
|
{
|
||||||
|
$output = [];
|
||||||
|
|
||||||
|
foreach ($this->finders as $finder) {
|
||||||
|
$output[] = sprintf(
|
||||||
|
'Executing the finder "%s":',
|
||||||
|
$finder->toString()
|
||||||
|
);
|
||||||
|
$output[] = $finder->diagnose();
|
||||||
|
|
||||||
|
$cores = $finder->find();
|
||||||
|
|
||||||
|
if (null !== $cores) {
|
||||||
|
$output[] = 'Result found: '.$cores;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output[] = '–––';
|
||||||
|
}
|
||||||
|
|
||||||
|
return implode(PHP_EOL, $output);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws NumberOfCpuCoreNotFound
|
* @throws NumberOfCpuCoreNotFound
|
||||||
*
|
*
|
||||||
@@ -86,4 +220,51 @@ final class CpuCoreCounter
|
|||||||
|
|
||||||
throw NumberOfCpuCoreNotFound::create();
|
throw NumberOfCpuCoreNotFound::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return positive-int|null
|
||||||
|
*/
|
||||||
|
public static function getKubernetesLimit(): ?int
|
||||||
|
{
|
||||||
|
$finder = new EnvVariableFinder('KUBERNETES_CPU_LIMIT');
|
||||||
|
|
||||||
|
return $finder->find();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkCountLimit(?int $countLimit): void
|
||||||
|
{
|
||||||
|
if (0 === $countLimit) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
'The count limit must be a non zero integer. Got "0".'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkLoadLimit(?float $loadLimit): void
|
||||||
|
{
|
||||||
|
if (null === $loadLimit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($loadLimit < 0. || $loadLimit > 1.) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
sprintf(
|
||||||
|
'The load limit must be in the range [0., 1.], got "%s".',
|
||||||
|
$loadLimit
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function checkSystemLoadAverage(?float $systemLoadAverage): void
|
||||||
|
{
|
||||||
|
if (null !== $systemLoadAverage && $systemLoadAverage < 0.) {
|
||||||
|
throw new InvalidArgumentException(
|
||||||
|
sprintf(
|
||||||
|
'The system load average must be a positive float, got "%s".',
|
||||||
|
$systemLoadAverage
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,15 +39,16 @@ final class ProcOpenExecutor implements ProcessExecutor
|
|||||||
],
|
],
|
||||||
$pipes
|
$pipes
|
||||||
);
|
);
|
||||||
|
// https://github.com/phpstan/phpstan/issues/13197
|
||||||
|
/** @var array{resource, resource, resource} $pipes */
|
||||||
if (!is_resource($process)) {
|
if (!is_resource($process)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose($pipes[0]);
|
fclose($pipes[0]);
|
||||||
|
|
||||||
$stdout = (string) stream_get_contents($pipes[1]);
|
$stdout = stream_get_contents($pipes[1]);
|
||||||
$stderr = (string) stream_get_contents($pipes[2]);
|
$stderr = stream_get_contents($pipes[2]);
|
||||||
|
|
||||||
proc_close($process);
|
proc_close($process);
|
||||||
|
|
||||||
|
|||||||
@@ -49,10 +49,12 @@ final class CpuInfoFinder implements CpuCoreFinder
|
|||||||
}
|
}
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
'Found the file "%s" with the content:%s%s',
|
'Found the file "%s" with the content:%s%s%sWill return "%s".',
|
||||||
self::CPU_INFO_PATH,
|
self::CPU_INFO_PATH,
|
||||||
PHP_EOL,
|
PHP_EOL,
|
||||||
$cpuInfo
|
$cpuInfo,
|
||||||
|
PHP_EOL,
|
||||||
|
self::countCpuCores($cpuInfo)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ final class DummyCpuCoreFinder implements CpuCoreFinder
|
|||||||
$this->count = $count;
|
$this->count = $count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @phpstan-ignore return.unusedType */
|
||||||
public function find(): ?int
|
public function find(): ?int
|
||||||
{
|
{
|
||||||
return $this->count;
|
return $this->count;
|
||||||
|
|||||||
@@ -38,6 +38,9 @@ final class FinderRegistry
|
|||||||
OnlyOnOSFamilyFinder::forWindows(
|
OnlyOnOSFamilyFinder::forWindows(
|
||||||
new DummyCpuCoreFinder(1)
|
new DummyCpuCoreFinder(1)
|
||||||
),
|
),
|
||||||
|
new OnlyInPowerShellFinder(new CmiCmdletLogicalFinder()),
|
||||||
|
new OnlyInPowerShellFinder(new CmiCmdletPhysicalFinder()),
|
||||||
|
new WindowsRegistryLogicalFinder(),
|
||||||
new WmicPhysicalFinder(),
|
new WmicPhysicalFinder(),
|
||||||
new WmicLogicalFinder(),
|
new WmicLogicalFinder(),
|
||||||
];
|
];
|
||||||
@@ -49,6 +52,12 @@ final class FinderRegistry
|
|||||||
public static function getDefaultLogicalFinders(): array
|
public static function getDefaultLogicalFinders(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
OnlyOnOSFamilyFinder::forWindows(
|
||||||
|
new OnlyInPowerShellFinder(
|
||||||
|
new CmiCmdletLogicalFinder()
|
||||||
|
)
|
||||||
|
),
|
||||||
|
OnlyOnOSFamilyFinder::forWindows(new WindowsRegistryLogicalFinder()),
|
||||||
OnlyOnOSFamilyFinder::forWindows(new WmicLogicalFinder()),
|
OnlyOnOSFamilyFinder::forWindows(new WmicLogicalFinder()),
|
||||||
new NProcFinder(),
|
new NProcFinder(),
|
||||||
new HwLogicalFinder(),
|
new HwLogicalFinder(),
|
||||||
@@ -65,6 +74,11 @@ final class FinderRegistry
|
|||||||
public static function getDefaultPhysicalFinders(): array
|
public static function getDefaultPhysicalFinders(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
OnlyOnOSFamilyFinder::forWindows(
|
||||||
|
new OnlyInPowerShellFinder(
|
||||||
|
new CmiCmdletPhysicalFinder()
|
||||||
|
)
|
||||||
|
),
|
||||||
OnlyOnOSFamilyFinder::forWindows(new WmicPhysicalFinder()),
|
OnlyOnOSFamilyFinder::forWindows(new WmicPhysicalFinder()),
|
||||||
new HwPhysicalFinder(),
|
new HwPhysicalFinder(),
|
||||||
new LscpuPhysicalFinder(),
|
new LscpuPhysicalFinder(),
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ final class LscpuPhysicalFinder extends ProcOpenBasedFinder
|
|||||||
protected function countCpuCores(string $process): ?int
|
protected function countCpuCores(string $process): ?int
|
||||||
{
|
{
|
||||||
$lines = explode(PHP_EOL, $process);
|
$lines = explode(PHP_EOL, $process);
|
||||||
|
/** @var string[]|false $actualLines */
|
||||||
$actualLines = preg_grep('/^\d+/', $lines);
|
$actualLines = preg_grep('/^\d+/', $lines);
|
||||||
|
|
||||||
if (!is_array($actualLines)) {
|
if (!is_array($actualLines)) {
|
||||||
|
|||||||
@@ -30,10 +30,13 @@ final class NProcFinder extends ProcOpenBasedFinder
|
|||||||
private $all;
|
private $all;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $all If disabled will give the number of cores available for the current process only.
|
* @param bool $all If disabled will give the number of cores available for the current process
|
||||||
|
* only. This is disabled by default as it is known to be "buggy" on virtual
|
||||||
|
* environments as the virtualization tool, e.g. VMWare, might over-commit
|
||||||
|
* resources by default.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
bool $all = true,
|
bool $all = false,
|
||||||
?ProcessExecutor $executor = null
|
?ProcessExecutor $executor = null
|
||||||
) {
|
) {
|
||||||
parent::__construct($executor);
|
parent::__construct($executor);
|
||||||
|
|||||||
@@ -56,16 +56,19 @@ abstract class ProcOpenBasedFinder implements CpuCoreFinder
|
|||||||
|
|
||||||
return $failed
|
return $failed
|
||||||
? sprintf(
|
? sprintf(
|
||||||
'Executed the command "%s" which wrote the following output to the STDERR:%s%s',
|
'Executed the command "%s" which wrote the following output to the STDERR:%s%s%sWill return "null".',
|
||||||
$command,
|
$command,
|
||||||
PHP_EOL,
|
PHP_EOL,
|
||||||
$stderr
|
$stderr,
|
||||||
|
PHP_EOL
|
||||||
)
|
)
|
||||||
: sprintf(
|
: sprintf(
|
||||||
'Executed the command "%s" and got the following (STDOUT) output:%s%s',
|
'Executed the command "%s" and got the following (STDOUT) output:%s%s%sWill return "%s".',
|
||||||
$command,
|
$command,
|
||||||
PHP_EOL,
|
PHP_EOL,
|
||||||
$stdout
|
$stdout,
|
||||||
|
PHP_EOL,
|
||||||
|
$this->countCpuCores($stdout) ?? 'null'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ final class WmicLogicalFinder extends ProcOpenBasedFinder
|
|||||||
return parent::countCpuCores($process);
|
return parent::countCpuCores($process);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @phpstan-ignore offsetAccess.notFound */
|
||||||
$count = $matches['count'];
|
$count = $matches['count'];
|
||||||
|
|
||||||
return parent::countCpuCores($count);
|
return parent::countCpuCores($count);
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ final class WmicPhysicalFinder extends ProcOpenBasedFinder
|
|||||||
return parent::countCpuCores($process);
|
return parent::countCpuCores($process);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @phpstan-ignore offsetAccess.notFound */
|
||||||
$count = $matches['count'];
|
$count = $matches['count'];
|
||||||
|
|
||||||
return parent::countCpuCores($count);
|
return parent::countCpuCores($count);
|
||||||
|
|||||||
@@ -1,76 +0,0 @@
|
|||||||
name: Tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request: null
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 2.x
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
tests:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php:
|
|
||||||
- '7.1'
|
|
||||||
- '7.2'
|
|
||||||
- '7.3'
|
|
||||||
- '7.4'
|
|
||||||
- '8.0'
|
|
||||||
- '8.1'
|
|
||||||
composer_version: ['v2']
|
|
||||||
include:
|
|
||||||
- description: '(prefer lowest)'
|
|
||||||
php: '7.1'
|
|
||||||
composer_version: '2.0.0'
|
|
||||||
dependencies: 'lowest'
|
|
||||||
|
|
||||||
name: PHP ${{ matrix.php }} tests ${{ matrix.description }}
|
|
||||||
steps:
|
|
||||||
# checkout git
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
# setup PHP
|
|
||||||
- uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php }}
|
|
||||||
tools: composer:${{ matrix.composer_version }}
|
|
||||||
coverage: xdebug
|
|
||||||
- uses: "ramsey/composer-install@v1"
|
|
||||||
with:
|
|
||||||
dependency-versions: ${{ matrix.dependencies }}
|
|
||||||
- run: vendor/bin/phpunit --coverage-clover=coverage.xml
|
|
||||||
- uses: codecov/codecov-action@v1
|
|
||||||
with:
|
|
||||||
file: './coverage.xml'
|
|
||||||
fail_ci_if_error: true
|
|
||||||
PHP-CS-Fixer:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Code style
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: '7.4'
|
|
||||||
coverage: none
|
|
||||||
- uses: "ramsey/composer-install@v1"
|
|
||||||
- run: vendor/bin/php-cs-fixer fix --ansi --verbose --dry-run
|
|
||||||
PHPStan:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: '7.4'
|
|
||||||
coverage: none
|
|
||||||
- uses: "ramsey/composer-install@v1"
|
|
||||||
- run: vendor/bin/phpstan analyse
|
|
||||||
Psalm:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: '7.4'
|
|
||||||
coverage: none
|
|
||||||
- uses: "ramsey/composer-install@v1"
|
|
||||||
- run: vendor/bin/psalm
|
|
||||||
-118
@@ -1,118 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$config = new PhpCsFixer\Config('default');
|
|
||||||
$config->setRiskyAllowed(true);
|
|
||||||
$config->setRules([
|
|
||||||
'@PSR2' => true,
|
|
||||||
'align_multiline_comment' => true,
|
|
||||||
'array_indentation' => true,
|
|
||||||
'array_syntax' => [
|
|
||||||
'syntax' => 'short',
|
|
||||||
],
|
|
||||||
'binary_operator_spaces' => [
|
|
||||||
'align_double_arrow' => false,
|
|
||||||
'align_equals' => false,
|
|
||||||
],
|
|
||||||
'blank_line_after_namespace' => true,
|
|
||||||
'blank_line_after_opening_tag' => true,
|
|
||||||
'blank_line_before_statement' => [
|
|
||||||
'statements' => [
|
|
||||||
'return',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'cast_spaces' => [
|
|
||||||
'space' => 'single',
|
|
||||||
],
|
|
||||||
'class_attributes_separation' => [
|
|
||||||
'elements' => [
|
|
||||||
'method' => 'one',
|
|
||||||
'property' => 'one',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'compact_nullable_typehint' => true,
|
|
||||||
'concat_space' => [
|
|
||||||
'spacing' => 'one',
|
|
||||||
],
|
|
||||||
'declare_equal_normalize' => true,
|
|
||||||
'declare_strict_types' => true,
|
|
||||||
'function_typehint_space' => true,
|
|
||||||
'include' => true,
|
|
||||||
'indentation_type' => true,
|
|
||||||
'lowercase_cast' => true,
|
|
||||||
'method_chaining_indentation' => true,
|
|
||||||
'method_separation' => true,
|
|
||||||
'multiline_comment_opening_closing' => true,
|
|
||||||
'native_function_casing' => true,
|
|
||||||
'new_with_braces' => true,
|
|
||||||
'no_blank_lines_after_phpdoc' => true,
|
|
||||||
'no_empty_comment' => true,
|
|
||||||
'no_empty_phpdoc' => true,
|
|
||||||
'no_empty_statement' => true,
|
|
||||||
'no_extra_consecutive_blank_lines' => [
|
|
||||||
'tokens' => [
|
|
||||||
'curly_brace_block',
|
|
||||||
'extra',
|
|
||||||
'parenthesis_brace_block',
|
|
||||||
'square_brace_block',
|
|
||||||
'throw',
|
|
||||||
'use',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'no_leading_import_slash' => true,
|
|
||||||
'no_leading_namespace_whitespace' => true,
|
|
||||||
'no_mixed_echo_print' => [
|
|
||||||
'use' => 'echo',
|
|
||||||
],
|
|
||||||
'no_multiline_whitespace_around_double_arrow' => true,
|
|
||||||
'no_short_bool_cast' => true,
|
|
||||||
'no_singleline_whitespace_before_semicolons' => true,
|
|
||||||
'no_spaces_around_offset' => true,
|
|
||||||
'no_superfluous_phpdoc_tags' => [
|
|
||||||
'allow_mixed' => true,
|
|
||||||
],
|
|
||||||
'no_trailing_comma_in_list_call' => true,
|
|
||||||
'no_trailing_comma_in_singleline_array' => true,
|
|
||||||
'no_unneeded_control_parentheses' => true,
|
|
||||||
'no_unused_imports' => true,
|
|
||||||
'no_whitespace_before_comma_in_array' => true,
|
|
||||||
'no_whitespace_in_blank_line' => true,
|
|
||||||
'not_operator_with_successor_space' => true,
|
|
||||||
'normalize_index_brace' => true,
|
|
||||||
'object_operator_without_whitespace' => true,
|
|
||||||
'ordered_imports' => true,
|
|
||||||
'phpdoc_align' => false,
|
|
||||||
'phpdoc_annotation_without_dot' => true,
|
|
||||||
'phpdoc_indent' => true,
|
|
||||||
'phpdoc_no_package' => true,
|
|
||||||
'phpdoc_no_useless_inheritdoc' => true,
|
|
||||||
'phpdoc_order' => true,
|
|
||||||
'phpdoc_scalar' => true,
|
|
||||||
'phpdoc_separation' => true,
|
|
||||||
'phpdoc_single_line_var_spacing' => true,
|
|
||||||
'phpdoc_to_comment' => true,
|
|
||||||
'phpdoc_trim' => true,
|
|
||||||
'phpdoc_trim_consecutive_blank_line_separation' => true,
|
|
||||||
'phpdoc_types' => true,
|
|
||||||
'phpdoc_var_without_name' => true,
|
|
||||||
'pre_increment' => true,
|
|
||||||
'psr4' => true,
|
|
||||||
'return_type_declaration' => true,
|
|
||||||
'short_scalar_cast' => true,
|
|
||||||
'single_blank_line_before_namespace' => true,
|
|
||||||
'single_class_element_per_statement' => true,
|
|
||||||
'single_quote' => true,
|
|
||||||
'space_after_semicolon' => true,
|
|
||||||
'standardize_not_equals' => true,
|
|
||||||
'ternary_operator_spaces' => true,
|
|
||||||
'ternary_to_null_coalescing' => true,
|
|
||||||
'trailing_comma_in_multiline_array' => true,
|
|
||||||
'trim_array_spaces' => true,
|
|
||||||
'unary_operator_spaces' => true,
|
|
||||||
'whitespace_after_comma_in_array' => true,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$finder = PhpCsFixer\Finder::create();
|
|
||||||
$finder->in(__DIR__);
|
|
||||||
$config->setFinder($finder);
|
|
||||||
|
|
||||||
return $config;
|
|
||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
pre-commit-check: composer cs phpstan psalm test
|
|
||||||
|
|
||||||
composer:
|
|
||||||
composer install
|
|
||||||
|
|
||||||
cs:
|
|
||||||
vendor/bin/php-cs-fixer fix --verbose
|
|
||||||
|
|
||||||
cs-dry-run:
|
|
||||||
vendor/bin/php-cs-fixer fix --verbose --dry-run
|
|
||||||
|
|
||||||
phpstan:
|
|
||||||
vendor/bin/phpstan analyze
|
|
||||||
|
|
||||||
psalm:
|
|
||||||
vendor/bin/psalm
|
|
||||||
|
|
||||||
test:
|
|
||||||
vendor/bin/phpunit
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
comment: false
|
|
||||||
+7
-6
@@ -3,15 +3,16 @@
|
|||||||
"description": "A library to get pretty versions strings of installed dependencies",
|
"description": "A library to get pretty versions strings of installed dependencies",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1|^8.0",
|
"php": "^7.4|^8.0",
|
||||||
"composer-runtime-api": "^2.0.0"
|
"composer-runtime-api": "^2.1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^2.17",
|
"friendsofphp/php-cs-fixer": "^3.2",
|
||||||
"jean85/composer-provided-replaced-stub-package": "^1.0",
|
"jean85/composer-provided-replaced-stub-package": "^1.0",
|
||||||
"phpstan/phpstan": "^0.12.66",
|
"phpstan/phpstan": "^2.0",
|
||||||
"phpunit/phpunit": "^7.5|^8.5|^9.4",
|
"phpunit/phpunit": "^7.5|^8.5|^9.6",
|
||||||
"vimeo/psalm": "^4.3"
|
"rector/rector": "^2.0",
|
||||||
|
"vimeo/psalm": "^4.3 || ^5.0"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"authors": [
|
"authors": [
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
parameters:
|
|
||||||
level: 8
|
|
||||||
paths:
|
|
||||||
- src/
|
|
||||||
- tests/
|
|
||||||
-16
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<psalm
|
|
||||||
errorLevel="4"
|
|
||||||
resolveFromConfigFile="true"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xmlns="https://getpsalm.org/schema/config"
|
|
||||||
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
|
||||||
>
|
|
||||||
<projectFiles>
|
|
||||||
<directory name="src" />
|
|
||||||
<directory name="tests" />
|
|
||||||
<ignoreFiles>
|
|
||||||
<directory name="vendor" />
|
|
||||||
</ignoreFiles>
|
|
||||||
</projectFiles>
|
|
||||||
</psalm>
|
|
||||||
@@ -43,14 +43,6 @@ class PrettyVersions
|
|||||||
|
|
||||||
protected static function checkProvidedPackages(string $packageName): void
|
protected static function checkProvidedPackages(string $packageName): void
|
||||||
{
|
{
|
||||||
if (! method_exists(InstalledVersions::class, 'getAllRawData')) {
|
|
||||||
if (isset(InstalledVersions::getRawData()['versions'][$packageName]['provided'])) {
|
|
||||||
throw ProvidedPackageException::create($packageName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (InstalledVersions::getAllRawData() as $installed) {
|
foreach (InstalledVersions::getAllRawData() as $installed) {
|
||||||
if (isset($installed['versions'][$packageName]['provided'])) {
|
if (isset($installed['versions'][$packageName]['provided'])) {
|
||||||
throw ProvidedPackageException::create($packageName);
|
throw ProvidedPackageException::create($packageName);
|
||||||
@@ -60,14 +52,6 @@ class PrettyVersions
|
|||||||
|
|
||||||
protected static function checkReplacedPackages(string $packageName): void
|
protected static function checkReplacedPackages(string $packageName): void
|
||||||
{
|
{
|
||||||
if (! method_exists(InstalledVersions::class, 'getAllRawData')) {
|
|
||||||
if (isset(InstalledVersions::getRawData()['versions'][$packageName]['replaced'])) {
|
|
||||||
throw ReplacedPackageException::create($packageName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (InstalledVersions::getAllRawData() as $installed) {
|
foreach (InstalledVersions::getAllRawData() as $installed) {
|
||||||
if (isset($installed['versions'][$packageName]['replaced'])) {
|
if (isset($installed['versions'][$packageName]['replaced'])) {
|
||||||
throw ReplacedPackageException::create($packageName);
|
throw ReplacedPackageException::create($packageName);
|
||||||
|
|||||||
+9
-9
@@ -8,17 +8,13 @@ class Version
|
|||||||
{
|
{
|
||||||
private const SHORT_COMMIT_LENGTH = 7;
|
private const SHORT_COMMIT_LENGTH = 7;
|
||||||
|
|
||||||
/** @var string */
|
private string $packageName;
|
||||||
private $packageName;
|
|
||||||
|
|
||||||
/** @var string */
|
private string $prettyVersion;
|
||||||
private $prettyVersion;
|
|
||||||
|
|
||||||
/** @var string */
|
private string $reference;
|
||||||
private $reference;
|
|
||||||
|
|
||||||
/** @var bool */
|
private bool $versionIsTagged;
|
||||||
private $versionIsTagged;
|
|
||||||
|
|
||||||
public const NO_VERSION_TEXT = '{no version}';
|
public const NO_VERSION_TEXT = '{no version}';
|
||||||
public const NO_REFERENCE_TEXT = '{no reference}';
|
public const NO_REFERENCE_TEXT = '{no reference}';
|
||||||
@@ -28,7 +24,7 @@ class Version
|
|||||||
$this->packageName = $packageName;
|
$this->packageName = $packageName;
|
||||||
$this->prettyVersion = $prettyVersion ?? self::NO_VERSION_TEXT;
|
$this->prettyVersion = $prettyVersion ?? self::NO_VERSION_TEXT;
|
||||||
$this->reference = $reference ?? self::NO_REFERENCE_TEXT;
|
$this->reference = $reference ?? self::NO_REFERENCE_TEXT;
|
||||||
$this->versionIsTagged = preg_match('/[^v\d.]/', $this->getShortVersion()) === 0;
|
$this->versionIsTagged = preg_match('/^v?(\d+\.)+\d+(-(beta|RC|alpha).?\d+)?/i', $this->getShortVersion()) === 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPrettyVersion(): string
|
public function getPrettyVersion(): string
|
||||||
@@ -91,6 +87,10 @@ class Version
|
|||||||
|
|
||||||
public function getShortReference(): string
|
public function getShortReference(): string
|
||||||
{
|
{
|
||||||
|
if ($this->reference === self::NO_REFERENCE_TEXT) {
|
||||||
|
return self::NO_REFERENCE_TEXT;
|
||||||
|
}
|
||||||
|
|
||||||
return substr($this->reference, 0, self::SHORT_COMMIT_LENGTH);
|
return substr($this->reference, 0, self::SHORT_COMMIT_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
# These are supported funding model platforms
|
|
||||||
|
|
||||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
||||||
patreon: # Replace with a single Patreon username
|
|
||||||
open_collective: # Replace with a single Open Collective username
|
|
||||||
ko_fi: # Replace with a single Ko-fi username
|
|
||||||
tidelift: "packagist/myclabs/deep-copy"
|
|
||||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
||||||
liberapay: # Replace with a single Liberapay username
|
|
||||||
issuehunt: # Replace with a single IssueHunt username
|
|
||||||
otechie: # Replace with a single Otechie username
|
|
||||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
||||||
-101
@@ -1,101 +0,0 @@
|
|||||||
name: "Continuous Integration"
|
|
||||||
|
|
||||||
on:
|
|
||||||
- pull_request
|
|
||||||
- push
|
|
||||||
|
|
||||||
env:
|
|
||||||
COMPOSER_ROOT_VERSION: 1.99
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
composer-json-lint:
|
|
||||||
name: "Lint composer.json"
|
|
||||||
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-version:
|
|
||||||
- "8.1"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: "actions/checkout@v2"
|
|
||||||
|
|
||||||
- name: "Install PHP"
|
|
||||||
uses: "shivammathur/setup-php@v2"
|
|
||||||
with:
|
|
||||||
coverage: "none"
|
|
||||||
php-version: "${{ matrix.php-version }}"
|
|
||||||
tools: composer-normalize
|
|
||||||
|
|
||||||
- name: "Get composer cache directory"
|
|
||||||
id: composercache
|
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
||||||
|
|
||||||
- name: "Cache dependencies"
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.composercache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
|
|
||||||
restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
|
|
||||||
|
|
||||||
- name: "Install dependencies"
|
|
||||||
run: "composer update --no-interaction --no-progress"
|
|
||||||
|
|
||||||
- name: "Validate composer.json"
|
|
||||||
run: "composer validate --strict"
|
|
||||||
|
|
||||||
- name: "Normalize composer.json"
|
|
||||||
run: "composer-normalize --dry-run"
|
|
||||||
|
|
||||||
tests:
|
|
||||||
name: "Tests"
|
|
||||||
|
|
||||||
runs-on: "ubuntu-latest"
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
php-version:
|
|
||||||
- "7.1"
|
|
||||||
- "7.2"
|
|
||||||
- "7.3"
|
|
||||||
- "7.4"
|
|
||||||
- "8.0"
|
|
||||||
- "8.1"
|
|
||||||
dependencies:
|
|
||||||
- "lowest"
|
|
||||||
- "highest"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: "actions/checkout@v2"
|
|
||||||
|
|
||||||
- name: "Install PHP"
|
|
||||||
uses: "shivammathur/setup-php@v2"
|
|
||||||
with:
|
|
||||||
php-version: "${{ matrix.php-version }}"
|
|
||||||
ini-values: zend.assertions=1
|
|
||||||
|
|
||||||
- name: "Get composer cache directory"
|
|
||||||
id: composercache
|
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
||||||
|
|
||||||
- name: "Cache dependencies"
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ${{ steps.composercache.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
|
|
||||||
restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
|
|
||||||
|
|
||||||
- name: "Install lowest dependencies"
|
|
||||||
if: ${{ matrix.dependencies == 'lowest' }}
|
|
||||||
run: "composer update --no-interaction --no-progress --prefer-lowest"
|
|
||||||
|
|
||||||
- name: "Install highest dependencies"
|
|
||||||
if: ${{ matrix.dependencies == 'highest' }}
|
|
||||||
run: "composer update --no-interaction --no-progress"
|
|
||||||
|
|
||||||
- name: "Run tests"
|
|
||||||
timeout-minutes: 3
|
|
||||||
run: "vendor/bin/phpunit"
|
|
||||||
Vendored
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph.
|
DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph.
|
||||||
|
|
||||||
[](https://packagist.org/packages/myclabs/deep-copy)
|
[](https://packagist.org/packages/myclabs/deep-copy)
|
||||||
[](https://github.com/myclabs/DeepCopy/actions)
|
[](https://github.com/myclabs/DeepCopy/actions/workflows/ci.yaml)
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -16,11 +16,12 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/collections": "^1.6.8",
|
"doctrine/collections": "^1.6.8",
|
||||||
"doctrine/common": "^2.13.3 || ^3.2.2",
|
"doctrine/common": "^2.13.3 || ^3.2.2",
|
||||||
|
"phpspec/prophecy": "^1.10",
|
||||||
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"doctrine/collections": "<1.6.8",
|
"doctrine/collections": "<1.6.8",
|
||||||
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
|
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@@ -32,8 +33,8 @@
|
|||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"DeepCopy\\": "fixtures/",
|
"DeepCopyTest\\": "tests/DeepCopyTest/",
|
||||||
"DeepCopyTest\\": "tests/DeepCopyTest/"
|
"DeepCopy\\": "fixtures/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
|
|||||||
+22
-2
@@ -4,6 +4,7 @@ namespace DeepCopy;
|
|||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use DateInterval;
|
use DateInterval;
|
||||||
|
use DatePeriod;
|
||||||
use DateTimeInterface;
|
use DateTimeInterface;
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use DeepCopy\Exception\CloneException;
|
use DeepCopy\Exception\CloneException;
|
||||||
@@ -12,6 +13,7 @@ use DeepCopy\Filter\Filter;
|
|||||||
use DeepCopy\Matcher\Matcher;
|
use DeepCopy\Matcher\Matcher;
|
||||||
use DeepCopy\Reflection\ReflectionHelper;
|
use DeepCopy\Reflection\ReflectionHelper;
|
||||||
use DeepCopy\TypeFilter\Date\DateIntervalFilter;
|
use DeepCopy\TypeFilter\Date\DateIntervalFilter;
|
||||||
|
use DeepCopy\TypeFilter\Date\DatePeriodFilter;
|
||||||
use DeepCopy\TypeFilter\Spl\ArrayObjectFilter;
|
use DeepCopy\TypeFilter\Spl\ArrayObjectFilter;
|
||||||
use DeepCopy\TypeFilter\Spl\SplDoublyLinkedListFilter;
|
use DeepCopy\TypeFilter\Spl\SplDoublyLinkedListFilter;
|
||||||
use DeepCopy\TypeFilter\TypeFilter;
|
use DeepCopy\TypeFilter\TypeFilter;
|
||||||
@@ -64,6 +66,7 @@ class DeepCopy
|
|||||||
|
|
||||||
$this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class));
|
$this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class));
|
||||||
$this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class));
|
$this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class));
|
||||||
|
$this->addTypeFilter(new DatePeriodFilter(), new TypeMatcher(DatePeriod::class));
|
||||||
$this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class));
|
$this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,9 +87,11 @@ class DeepCopy
|
|||||||
/**
|
/**
|
||||||
* Deep copies the given object.
|
* Deep copies the given object.
|
||||||
*
|
*
|
||||||
* @param mixed $object
|
* @template TObject
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @param TObject $object
|
||||||
|
*
|
||||||
|
* @return TObject
|
||||||
*/
|
*/
|
||||||
public function copy($object)
|
public function copy($object)
|
||||||
{
|
{
|
||||||
@@ -119,6 +124,14 @@ class DeepCopy
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function prependTypeFilter(TypeFilter $filter, TypeMatcher $matcher)
|
||||||
|
{
|
||||||
|
array_unshift($this->typeFilters, [
|
||||||
|
'matcher' => $matcher,
|
||||||
|
'filter' => $filter,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
private function recursiveCopy($var)
|
private function recursiveCopy($var)
|
||||||
{
|
{
|
||||||
// Matches Type Filter
|
// Matches Type Filter
|
||||||
@@ -224,6 +237,11 @@ class DeepCopy
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ignore readonly properties
|
||||||
|
if (method_exists($property, 'isReadOnly') && $property->isReadOnly()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Apply the filters
|
// Apply the filters
|
||||||
foreach ($this->filters as $item) {
|
foreach ($this->filters as $item) {
|
||||||
/** @var Matcher $matcher */
|
/** @var Matcher $matcher */
|
||||||
@@ -249,7 +267,9 @@ class DeepCopy
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PHP_VERSION_ID < 80100) {
|
||||||
$property->setAccessible(true);
|
$property->setAccessible(true);
|
||||||
|
}
|
||||||
|
|
||||||
// Ignore uninitialized properties (for PHP >7.4)
|
// Ignore uninitialized properties (for PHP >7.4)
|
||||||
if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) {
|
if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) {
|
||||||
|
|||||||
+2
@@ -19,7 +19,9 @@ class DoctrineCollectionFilter implements Filter
|
|||||||
{
|
{
|
||||||
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
||||||
|
|
||||||
|
if (PHP_VERSION_ID < 80100) {
|
||||||
$reflectionProperty->setAccessible(true);
|
$reflectionProperty->setAccessible(true);
|
||||||
|
}
|
||||||
$oldCollection = $reflectionProperty->getValue($object);
|
$oldCollection = $reflectionProperty->getValue($object);
|
||||||
|
|
||||||
$newCollection = $oldCollection->map(
|
$newCollection = $oldCollection->map(
|
||||||
|
|||||||
+2
@@ -21,7 +21,9 @@ class DoctrineEmptyCollectionFilter implements Filter
|
|||||||
public function apply($object, $property, $objectCopier)
|
public function apply($object, $property, $objectCopier)
|
||||||
{
|
{
|
||||||
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
||||||
|
if (PHP_VERSION_ID < 80100) {
|
||||||
$reflectionProperty->setAccessible(true);
|
$reflectionProperty->setAccessible(true);
|
||||||
|
}
|
||||||
|
|
||||||
$reflectionProperty->setValue($object, new ArrayCollection());
|
$reflectionProperty->setValue($object, new ArrayCollection());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,9 @@ class ReplaceFilter implements Filter
|
|||||||
public function apply($object, $property, $objectCopier)
|
public function apply($object, $property, $objectCopier)
|
||||||
{
|
{
|
||||||
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
||||||
|
if (PHP_VERSION_ID < 80100) {
|
||||||
$reflectionProperty->setAccessible(true);
|
$reflectionProperty->setAccessible(true);
|
||||||
|
}
|
||||||
|
|
||||||
$value = call_user_func($this->callback, $reflectionProperty->getValue($object));
|
$value = call_user_func($this->callback, $reflectionProperty->getValue($object));
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ class SetNullFilter implements Filter
|
|||||||
{
|
{
|
||||||
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
$reflectionProperty = ReflectionHelper::getProperty($object, $property);
|
||||||
|
|
||||||
|
if (PHP_VERSION_ID < 80100) {
|
||||||
$reflectionProperty->setAccessible(true);
|
$reflectionProperty->setAccessible(true);
|
||||||
|
}
|
||||||
$reflectionProperty->setValue($object, null);
|
$reflectionProperty->setValue($object, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ class PropertyTypeMatcher implements Matcher
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PHP_VERSION_ID < 80100) {
|
||||||
$reflectionProperty->setAccessible(true);
|
$reflectionProperty->setAccessible(true);
|
||||||
|
}
|
||||||
|
|
||||||
// Uninitialized properties (for PHP >7.4)
|
// Uninitialized properties (for PHP >7.4)
|
||||||
if (method_exists($reflectionProperty, 'isInitialized') && !$reflectionProperty->isInitialized($object)) {
|
if (method_exists($reflectionProperty, 'isInitialized') && !$reflectionProperty->isInitialized($object)) {
|
||||||
|
|||||||
Vendored
+17
-7
@@ -15,16 +15,21 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.1 <8.3",
|
"php": "8.1 - 8.5",
|
||||||
"nette/utils": "^2.5.7 || ^3.1.5 || ^4.0"
|
"nette/utils": "^4.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"nette/tester": "^2.3 || ^2.4",
|
"nette/tester": "^2.6",
|
||||||
"tracy/tracy": "^2.7",
|
"tracy/tracy": "^2.8",
|
||||||
"phpstan/phpstan-nette": "^1.0"
|
"phpstan/phpstan": "^2.1.39@stable",
|
||||||
|
"phpstan/extension-installer": "^1.4@stable",
|
||||||
|
"nette/phpstan-rules": "^1.0"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"classmap": ["src/"]
|
"classmap": ["src/"],
|
||||||
|
"psr-4": {
|
||||||
|
"Nette\\": "src"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -33,7 +38,12 @@
|
|||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.2-dev"
|
"dev-master": "1.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"phpstan/extension-installer": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
-33
@@ -1,33 +0,0 @@
|
|||||||
How to contribute & use the issue tracker
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
Nette welcomes your contributions. There are several ways to help out:
|
|
||||||
|
|
||||||
* Create an issue on GitHub, if you have found a bug
|
|
||||||
* Write test cases for open bug issues
|
|
||||||
* Write fixes for open bug/feature issues, preferably with test cases included
|
|
||||||
* Contribute to the [documentation](https://nette.org/en/writing)
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
Please **do not use the issue tracker to ask questions**. We will be happy to help you
|
|
||||||
on [Nette forum](https://forum.nette.org) or chat with us on [Gitter](https://gitter.im/nette/nette).
|
|
||||||
|
|
||||||
A good bug report shouldn't leave others needing to chase you up for more
|
|
||||||
information. Please try to be as detailed as possible in your report.
|
|
||||||
|
|
||||||
**Feature requests** are welcome. But take a moment to find out whether your idea
|
|
||||||
fits with the scope and aims of the project. It's up to *you* to make a strong
|
|
||||||
case to convince the project's developers of the merits of this feature.
|
|
||||||
|
|
||||||
Contributing
|
|
||||||
------------
|
|
||||||
|
|
||||||
If you'd like to contribute, please take a moment to read [the contributing guide](https://nette.org/en/contributing).
|
|
||||||
|
|
||||||
The best way to propose a feature is to discuss your ideas on [Nette forum](https://forum.nette.org) before implementing them.
|
|
||||||
|
|
||||||
Please do not fix whitespace, format code, or make a purely cosmetic patch.
|
|
||||||
|
|
||||||
Thanks! :heart:
|
|
||||||
Vendored
+143
-48
@@ -1,5 +1,4 @@
|
|||||||
Nette Schema
|
# Nette Schema
|
||||||
************
|
|
||||||
|
|
||||||
[](https://packagist.org/packages/nette/schema)
|
[](https://packagist.org/packages/nette/schema)
|
||||||
[](https://github.com/nette/schema/actions)
|
[](https://github.com/nette/schema/actions)
|
||||||
@@ -21,7 +20,7 @@ Installation:
|
|||||||
composer require nette/schema
|
composer require nette/schema
|
||||||
```
|
```
|
||||||
|
|
||||||
It requires PHP version 7.1 and supports PHP up to 8.2.
|
It requires PHP version 8.1 and supports PHP up to 8.5.
|
||||||
|
|
||||||
|
|
||||||
[Support Me](https://github.com/sponsors/dg)
|
[Support Me](https://github.com/sponsors/dg)
|
||||||
@@ -39,7 +38,7 @@ Basic Usage
|
|||||||
|
|
||||||
In variable `$schema` we have a validation schema (what exactly this means and how to create it we will say later) and in variable `$data` we have a data structure that we want to validate and normalize. This can be, for example, data sent by the user through an API, configuration file, etc.
|
In variable `$schema` we have a validation schema (what exactly this means and how to create it we will say later) and in variable `$data` we have a data structure that we want to validate and normalize. This can be, for example, data sent by the user through an API, configuration file, etc.
|
||||||
|
|
||||||
The task is handled by the [Nette\Schema\Processor](https://api.nette.org/3.0/Nette/Schema/Processor.html) class, which processes the input and either returns normalized data or throws an [Nette\Schema\ValidationException](https://api.nette.org/3.0/Nette/Schema/ValidationException.html) exception on error.
|
The task is handled by the [Nette\Schema\Processor](https://api.nette.org/schema/master/Nette/Schema/Processor.html) class, which processes the input and either returns normalized data or throws an [Nette\Schema\ValidationException](https://api.nette.org/schema/master/Nette/Schema/ValidationException.html) exception on error.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$processor = new Nette\Schema\Processor;
|
$processor = new Nette\Schema\Processor;
|
||||||
@@ -51,13 +50,13 @@ try {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Method `$e->getMessages()` returns array of all message strings and `$e->getMessageObjects()` return all messages as [Nette\Schema\Message](https://api.nette.org/3.1/Nette/Schema/Message.html) objects.
|
Method `$e->getMessages()` returns array of all message strings and `$e->getMessageObjects()` return all messages as [Nette\Schema\Message](https://api.nette.org/schema/master/Nette/Schema/Message.html) objects.
|
||||||
|
|
||||||
|
|
||||||
Defining Schema
|
Defining Schema
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
And now let's create a schema. The class [Nette\Schema\Expect](https://api.nette.org/3.0/Nette/Schema/Expect.html) is used to define it, we actually define expectations of what the data should look like. Let's say that the input data must be a structure (e.g. an array) containing elements `processRefund` of type bool and `refundAmount` of type int.
|
And now let's create a schema. The class [Nette\Schema\Expect](https://api.nette.org/schema/master/Nette/Schema/Expect.html) is used to define it, we actually define expectations of what the data should look like. Let's say that the input data must be a structure (e.g. an array) containing elements `processRefund` of type bool and `refundAmount` of type int.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
use Nette\Schema\Expect;
|
use Nette\Schema\Expect;
|
||||||
@@ -113,7 +112,6 @@ is_bool($normalized->processRefund); // true
|
|||||||
Now you know the basics of how the schema is defined and how the individual elements of the structure behave. We will now show what all the other elements can be used in defining a schema.
|
Now you know the basics of how the schema is defined and how the individual elements of the structure behave. We will now show what all the other elements can be used in defining a schema.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Data Types: type()
|
Data Types: type()
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -152,6 +150,15 @@ $processor->process($schema, ['a' => 'hello', 'b' => 'world']); // OK
|
|||||||
$processor->process($schema, ['key' => 123]); // ERROR: 123 is not a string
|
$processor->process($schema, ['key' => 123]); // ERROR: 123 is not a string
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The second parameter can be used to specify keys (since version 1.2):
|
||||||
|
|
||||||
|
```php
|
||||||
|
$schema = Expect::arrayOf('string', 'int');
|
||||||
|
|
||||||
|
$processor->process($schema, ['hello', 'world']); // OK
|
||||||
|
$processor->process($schema, ['a' => 'hello']); // ERROR: 'a' is not int
|
||||||
|
```
|
||||||
|
|
||||||
The list is an indexed array:
|
The list is an indexed array:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@@ -169,7 +176,7 @@ The parameter can also be a schema, so we can write:
|
|||||||
Expect::arrayOf(Expect::bool())
|
Expect::arrayOf(Expect::bool())
|
||||||
```
|
```
|
||||||
|
|
||||||
The default value is an empty array. If you specify default value, it will be merged with the passed data. This can be disabled using `mergeDefaults(false)`.
|
The default value is an empty array. If you specify a default value, it will be merged with the passed data. This can be disabled using `mergeDefaults(false)`.
|
||||||
|
|
||||||
|
|
||||||
Enumeration: anyOf()
|
Enumeration: anyOf()
|
||||||
@@ -179,7 +186,7 @@ Enumeration: anyOf()
|
|||||||
|
|
||||||
```php
|
```php
|
||||||
$schema = Expect::listOf(
|
$schema = Expect::listOf(
|
||||||
Expect::anyOf('a', true, null)
|
Expect::anyOf('a', true, null),
|
||||||
);
|
);
|
||||||
|
|
||||||
$processor->process($schema, ['a', true, null, 'a']); // OK
|
$processor->process($schema, ['a', true, null, 'a']); // OK
|
||||||
@@ -190,14 +197,21 @@ The enumeration elements can also be schemas:
|
|||||||
|
|
||||||
```php
|
```php
|
||||||
$schema = Expect::listOf(
|
$schema = Expect::listOf(
|
||||||
Expect::anyOf(Expect::string(), true, null)
|
Expect::anyOf(Expect::string(), true, null),
|
||||||
);
|
);
|
||||||
|
|
||||||
$processor->process($schema, ['foo', true, null, 'bar']); // OK
|
$processor->process($schema, ['foo', true, null, 'bar']); // OK
|
||||||
$processor->process($schema, [123]); // ERROR
|
$processor->process($schema, [123]); // ERROR
|
||||||
```
|
```
|
||||||
|
|
||||||
The default value is `null`.
|
The `anyOf()` method accepts variants as individual parameters, not as array. To pass it an array of values, use the unpacking operator `anyOf(...$variants)`.
|
||||||
|
|
||||||
|
The default value is `null`. Use the `firstIsDefault()` method to make the first element the default:
|
||||||
|
|
||||||
|
```php
|
||||||
|
// default is 'hello'
|
||||||
|
Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Structures
|
Structures
|
||||||
@@ -216,12 +230,24 @@ $schema = Expect::structure([
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$processor->process($schema, ['optional' => '']);
|
$processor->process($schema, ['optional' => '']);
|
||||||
// ERROR: item 'required' is missing
|
// ERROR: option 'required' is missing
|
||||||
|
|
||||||
$processor->process($schema, ['required' => 'foo']);
|
$processor->process($schema, ['required' => 'foo']);
|
||||||
// OK, returns {'required' => 'foo', 'optional' => null}
|
// OK, returns {'required' => 'foo', 'optional' => null}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you do not want to output properties with only a default value, use `skipDefaults()`:
|
||||||
|
|
||||||
|
```php
|
||||||
|
$schema = Expect::structure([
|
||||||
|
'required' => Expect::string()->required(),
|
||||||
|
'optional' => Expect::string(),
|
||||||
|
])->skipDefaults();
|
||||||
|
|
||||||
|
$processor->process($schema, ['required' => 'foo']);
|
||||||
|
// OK, returns {'required' => 'foo'}
|
||||||
|
```
|
||||||
|
|
||||||
Although `null` is the default value of the `optional` property, it is not allowed in the input data (the value must be a string). Properties accepting `null` are defined using `nullable()`:
|
Although `null` is the default value of the `optional` property, it is not allowed in the input data (the value must be a string). Properties accepting `null` are defined using `nullable()`:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@@ -259,10 +285,11 @@ $processor->process($schema, ['additional' => 1]); // OK
|
|||||||
$processor->process($schema, ['additional' => true]); // ERROR
|
$processor->process($schema, ['additional' => true]); // ERROR
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Deprecations
|
Deprecations
|
||||||
------------
|
------------
|
||||||
|
|
||||||
You can deprecate property using the `deprecated([string $message])` method. Deprecation notices are returned by `$processor->getWarnings()` (since v1.1):
|
You can deprecate property using the `deprecated([string $message])` method. Deprecation notices are returned by `$processor->getWarnings()`:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$schema = Expect::structure([
|
$schema = Expect::structure([
|
||||||
@@ -273,6 +300,7 @@ $processor->process($schema, ['old' => 1]); // OK
|
|||||||
$processor->getWarnings(); // ["The item 'old' is deprecated"]
|
$processor->getWarnings(); // ["The item 'old' is deprecated"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Ranges: min() max()
|
Ranges: min() max()
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
@@ -322,7 +350,7 @@ Custom Assertions: assert()
|
|||||||
You can add any other restrictions using `assert(callable $fn)`.
|
You can add any other restrictions using `assert(callable $fn)`.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$countIsEven = function ($v) { return count($v) % 2 === 0; };
|
$countIsEven = fn($v) => count($v) % 2 === 0;
|
||||||
|
|
||||||
$schema = Expect::arrayOf('string')
|
$schema = Expect::arrayOf('string')
|
||||||
->assert($countIsEven); // the count must be even
|
->assert($countIsEven); // the count must be even
|
||||||
@@ -337,7 +365,7 @@ Or
|
|||||||
Expect::string()->assert('is_file'); // the file must exist
|
Expect::string()->assert('is_file'); // the file must exist
|
||||||
```
|
```
|
||||||
|
|
||||||
You can add your own description for each assertions. It will be part of the error message.
|
You can add your own description for each assertion. It will be part of the error message.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$schema = Expect::arrayOf('string')
|
$schema = Expect::arrayOf('string')
|
||||||
@@ -347,7 +375,106 @@ $processor->process($schema, ['a', 'b', 'c']);
|
|||||||
// Failed assertion "Even items in array" for item with value array.
|
// Failed assertion "Even items in array" for item with value array.
|
||||||
```
|
```
|
||||||
|
|
||||||
The method can be called repeatedly to add more assertions.
|
The method can be called repeatedly to add multiple constraints. It can be intermixed with calls to `transform()` and `castTo()`.
|
||||||
|
|
||||||
|
|
||||||
|
Transformation: transform()
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Successfully validated data can be modified using a custom function:
|
||||||
|
|
||||||
|
```php
|
||||||
|
// conversion to uppercase:
|
||||||
|
Expect::string()->transform(fn(string $s) => strtoupper($s));
|
||||||
|
```
|
||||||
|
|
||||||
|
The method can be called repeatedly to add multiple transformations. It can be intermixed with calls to `assert()` and `castTo()`. The operations will be executed in the order in which they are declared:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Expect::type('string|int')
|
||||||
|
->castTo('string')
|
||||||
|
->assert('ctype_lower', 'All characters must be lowercased')
|
||||||
|
->transform(fn(string $s) => strtoupper($s)); // conversion to uppercase
|
||||||
|
```
|
||||||
|
|
||||||
|
The `transform()` method can both transform and validate the value simultaneously. This is often simpler and less redundant than chaining `transform()` and `assert()`. For this purpose, the function receives a [Nette\Schema\Context](https://api.nette.org/schema/master/Nette/Schema/Context.html) object with an `addError()` method, which can be used to add information about validation issues:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Expect::string()
|
||||||
|
->transform(function (string $s, Nette\Schema\Context $context) {
|
||||||
|
if (!ctype_lower($s)) {
|
||||||
|
$context->addError('All characters must be lowercased', 'my.case.error');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return strtoupper($s);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Casting: castTo()
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Successfully validated data can be cast:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Expect::scalar()->castTo('string');
|
||||||
|
```
|
||||||
|
|
||||||
|
In addition to native PHP types, you can also cast to classes. It distinguishes whether it is a simple class without a constructor or a class with a constructor. If the class has no constructor, an instance of it is created and all elements of the structure are written to its properties:
|
||||||
|
|
||||||
|
```php
|
||||||
|
class Info
|
||||||
|
{
|
||||||
|
public bool $processRefund;
|
||||||
|
public int $refundAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
Expect::structure([
|
||||||
|
'processRefund' => Expect::bool(),
|
||||||
|
'refundAmount' => Expect::int(),
|
||||||
|
])->castTo(Info::class);
|
||||||
|
|
||||||
|
// creates '$obj = new Info' and writes to $obj->processRefund and $obj->refundAmount
|
||||||
|
```
|
||||||
|
|
||||||
|
If the class has a constructor, the elements of the structure are passed as named parameters to the constructor:
|
||||||
|
|
||||||
|
```php
|
||||||
|
class Info
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
public bool $processRefund,
|
||||||
|
public int $refundAmount,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// creates $obj = new Info(processRefund: ..., refundAmount: ...)
|
||||||
|
```
|
||||||
|
|
||||||
|
Casting combined with a scalar parameter creates an object and passes the value as the sole parameter to the constructor:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Expect::string()->castTo(DateTime::class);
|
||||||
|
// creates new DateTime(...)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Normalization: before()
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Prior to the validation itself, the data can be normalized using the method `before()`. As an example, let's have an element that must be an array of strings (eg `['a', 'b', 'c']`), but receives input in the form of a string `a b c`:
|
||||||
|
|
||||||
|
```php
|
||||||
|
$explode = fn($v) => explode(' ', $v);
|
||||||
|
|
||||||
|
$schema = Expect::arrayOf('string')
|
||||||
|
->before($explode);
|
||||||
|
|
||||||
|
$normalized = $processor->process($schema, 'a b c');
|
||||||
|
// OK, returns ['a', 'b', 'c']
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Mapping to Objects: from()
|
Mapping to Objects: from()
|
||||||
@@ -407,35 +534,3 @@ $schema = Expect::from(new Config, [
|
|||||||
'name' => Expect::string()->pattern('\w:.*'),
|
'name' => Expect::string()->pattern('\w:.*'),
|
||||||
]);
|
]);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Casting: castTo()
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Successfully validated data can be cast:
|
|
||||||
|
|
||||||
```php
|
|
||||||
Expect::scalar()->castTo('string');
|
|
||||||
```
|
|
||||||
|
|
||||||
In addition to native PHP types, you can also cast to classes:
|
|
||||||
|
|
||||||
```php
|
|
||||||
Expect::scalar()->castTo('AddressEntity');
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
Normalization: before()
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
Prior to the validation itself, the data can be normalized using the method `before()`. As an example, let's have an element that must be an array of strings (eg `['a', 'b', 'c']`), but receives input in the form of a string `a b c`:
|
|
||||||
|
|
||||||
```php
|
|
||||||
$explode = function ($v) { return explode(' ', $v); };
|
|
||||||
|
|
||||||
$schema = Expect::arrayOf('string')
|
|
||||||
->before($explode);
|
|
||||||
|
|
||||||
$normalized = $processor->process($schema, 'a b c');
|
|
||||||
// OK, returns ['a', 'b', 'c']
|
|
||||||
```
|
|
||||||
|
|||||||
+22
-18
@@ -1,40 +1,35 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
use Nette;
|
use function count;
|
||||||
|
|
||||||
|
|
||||||
final class Context
|
final class Context
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
public bool $skipDefaults = false;
|
||||||
|
|
||||||
/** @var bool */
|
/** @var list<int|string> */
|
||||||
public $skipDefaults = false;
|
public array $path = [];
|
||||||
|
|
||||||
/** @var string[] */
|
public bool $isKey = false;
|
||||||
public $path = [];
|
|
||||||
|
|
||||||
/** @var bool */
|
/** @var list<Message> */
|
||||||
public $isKey = false;
|
public array $errors = [];
|
||||||
|
|
||||||
/** @var Message[] */
|
/** @var list<Message> */
|
||||||
public $errors = [];
|
public array $warnings = [];
|
||||||
|
|
||||||
/** @var Message[] */
|
/** @var list<array{DynamicParameter, string, list<int|string>}> */
|
||||||
public $warnings = [];
|
public array $dynamics = [];
|
||||||
|
|
||||||
/** @var array[] */
|
|
||||||
public $dynamics = [];
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @param array<string, mixed> $variables */
|
||||||
public function addError(string $message, string $code, array $variables = []): Message
|
public function addError(string $message, string $code, array $variables = []): Message
|
||||||
{
|
{
|
||||||
$variables['isKey'] = $this->isKey;
|
$variables['isKey'] = $this->isKey;
|
||||||
@@ -42,8 +37,17 @@ final class Context
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param array<string, mixed> $variables */
|
||||||
public function addWarning(string $message, string $code, array $variables = []): Message
|
public function addWarning(string $message, string $code, array $variables = []): Message
|
||||||
{
|
{
|
||||||
return $this->warnings[] = new Message($message, $code, $this->path, $variables);
|
return $this->warnings[] = new Message($message, $code, $this->path, $variables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @return \Closure(): bool */
|
||||||
|
public function createChecker(): \Closure
|
||||||
|
{
|
||||||
|
$count = count($this->errors);
|
||||||
|
return fn(): bool => $count === count($this->errors);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-3
@@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+27
-21
@@ -1,33 +1,28 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema\Elements;
|
namespace Nette\Schema\Elements;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use Nette\Schema\Context;
|
use Nette\Schema\Context;
|
||||||
use Nette\Schema\Helpers;
|
use Nette\Schema\Helpers;
|
||||||
use Nette\Schema\Schema;
|
use Nette\Schema\Schema;
|
||||||
|
use function array_merge, array_unique, implode, is_array;
|
||||||
|
|
||||||
|
|
||||||
final class AnyOf implements Schema
|
final class AnyOf implements Schema
|
||||||
{
|
{
|
||||||
use Base;
|
use Base;
|
||||||
use Nette\SmartObject;
|
|
||||||
|
|
||||||
/** @var array */
|
/** @var mixed[] */
|
||||||
private $set;
|
private array $set;
|
||||||
|
|
||||||
|
|
||||||
/**
|
public function __construct(mixed ...$set)
|
||||||
* @param mixed|Schema ...$set
|
|
||||||
*/
|
|
||||||
public function __construct(...$set)
|
|
||||||
{
|
{
|
||||||
if (!$set) {
|
if (!$set) {
|
||||||
throw new Nette\InvalidStateException('The enumeration must not be empty.');
|
throw new Nette\InvalidStateException('The enumeration must not be empty.');
|
||||||
@@ -61,16 +56,16 @@ final class AnyOf implements Schema
|
|||||||
/********************* processing ****************d*g**/
|
/********************* processing ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
public function normalize($value, Context $context)
|
public function normalize(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
return $this->doNormalize($value, $context);
|
return $this->doNormalize($value, $context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function merge($value, $base)
|
public function merge(mixed $value, mixed $base): mixed
|
||||||
{
|
{
|
||||||
if (is_array($value) && isset($value[Helpers::PREVENT_MERGING])) {
|
if (is_array($value) && isset($value[Helpers::PreventMerging])) {
|
||||||
unset($value[Helpers::PREVENT_MERGING]);
|
unset($value[Helpers::PreventMerging]);
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +73,16 @@ final class AnyOf implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function complete($value, Context $context)
|
public function complete(mixed $value, Context $context): mixed
|
||||||
|
{
|
||||||
|
$isOk = $context->createChecker();
|
||||||
|
$value = $this->findAlternative($value, $context);
|
||||||
|
$isOk() && $value = $this->doTransform($value, $context);
|
||||||
|
return $isOk() ? $value : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function findAlternative(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
$expecteds = $innerErrors = [];
|
$expecteds = $innerErrors = [];
|
||||||
foreach ($this->set as $item) {
|
foreach ($this->set as $item) {
|
||||||
@@ -88,7 +92,7 @@ final class AnyOf implements Schema
|
|||||||
$res = $item->complete($item->normalize($value, $dolly), $dolly);
|
$res = $item->complete($item->normalize($value, $dolly), $dolly);
|
||||||
if (!$dolly->errors) {
|
if (!$dolly->errors) {
|
||||||
$context->warnings = array_merge($context->warnings, $dolly->warnings);
|
$context->warnings = array_merge($context->warnings, $dolly->warnings);
|
||||||
return $this->doFinalize($res, $context);
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($dolly->errors as $error) {
|
foreach ($dolly->errors as $error) {
|
||||||
@@ -100,7 +104,7 @@ final class AnyOf implements Schema
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($item === $value) {
|
if ($item === $value) {
|
||||||
return $this->doFinalize($value, $context);
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
$expecteds[] = Nette\Schema\Helpers::formatValue($item);
|
$expecteds[] = Nette\Schema\Helpers::formatValue($item);
|
||||||
@@ -112,22 +116,24 @@ final class AnyOf implements Schema
|
|||||||
} else {
|
} else {
|
||||||
$context->addError(
|
$context->addError(
|
||||||
'The %label% %path% expects to be %expected%, %value% given.',
|
'The %label% %path% expects to be %expected%, %value% given.',
|
||||||
Nette\Schema\Message::TYPE_MISMATCH,
|
Nette\Schema\Message::TypeMismatch,
|
||||||
[
|
[
|
||||||
'value' => $value,
|
'value' => $value,
|
||||||
'expected' => implode('|', array_unique($expecteds)),
|
'expected' => implode('|', array_unique($expecteds)),
|
||||||
]
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function completeDefault(Context $context)
|
public function completeDefault(Context $context): mixed
|
||||||
{
|
{
|
||||||
if ($this->required) {
|
if ($this->required) {
|
||||||
$context->addError(
|
$context->addError(
|
||||||
'The mandatory item %path% is missing.',
|
'The mandatory item %path% is missing.',
|
||||||
Nette\Schema\Message::MISSING_ITEM
|
Nette\Schema\Message::MissingItem,
|
||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
+71
-104
@@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema\Elements;
|
namespace Nette\Schema\Elements;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use Nette\Schema\Context;
|
use Nette\Schema\Context;
|
||||||
|
use Nette\Schema\Helpers;
|
||||||
|
use function count, is_string;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,26 +18,18 @@ use Nette\Schema\Context;
|
|||||||
*/
|
*/
|
||||||
trait Base
|
trait Base
|
||||||
{
|
{
|
||||||
/** @var bool */
|
private bool $required = false;
|
||||||
private $required = false;
|
private mixed $default = null;
|
||||||
|
|
||||||
/** @var mixed */
|
/** @var ?\Closure(mixed): mixed */
|
||||||
private $default;
|
private ?\Closure $before = null;
|
||||||
|
|
||||||
/** @var callable|null */
|
/** @var list<\Closure(mixed, Context): mixed> */
|
||||||
private $before;
|
private array $transforms = [];
|
||||||
|
private ?string $deprecated = null;
|
||||||
/** @var array[] */
|
|
||||||
private $asserts = [];
|
|
||||||
|
|
||||||
/** @var string|null */
|
|
||||||
private $castTo;
|
|
||||||
|
|
||||||
/** @var string|null */
|
|
||||||
private $deprecated;
|
|
||||||
|
|
||||||
|
|
||||||
public function default($value): self
|
public function default(mixed $value): self
|
||||||
{
|
{
|
||||||
$this->default = $value;
|
$this->default = $value;
|
||||||
return $this;
|
return $this;
|
||||||
@@ -51,24 +43,42 @@ trait Base
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param callable(mixed): mixed $handler */
|
||||||
public function before(callable $handler): self
|
public function before(callable $handler): self
|
||||||
{
|
{
|
||||||
$this->before = $handler;
|
$this->before = $handler(...);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function castTo(string $type): self
|
public function castTo(string $type): self
|
||||||
{
|
{
|
||||||
$this->castTo = $type;
|
return $this->transform(Helpers::getCastStrategy($type));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param callable(mixed, Context): mixed $handler */
|
||||||
|
public function transform(callable $handler): self
|
||||||
|
{
|
||||||
|
$this->transforms[] = $handler(...);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param callable(mixed): bool $handler */
|
||||||
public function assert(callable $handler, ?string $description = null): self
|
public function assert(callable $handler, ?string $description = null): self
|
||||||
{
|
{
|
||||||
$this->asserts[] = [$handler, $description];
|
$expected = $description ?? (is_string($handler) ? "$handler()" : '#' . count($this->transforms));
|
||||||
return $this;
|
return $this->transform(function ($value, Context $context) use ($handler, $description, $expected) {
|
||||||
|
if ($handler($value)) {
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
$context->addError(
|
||||||
|
'Failed assertion ' . ($description ? "'%assertion%'" : '%assertion%') . ' for %label% %path% with value %value%.',
|
||||||
|
Nette\Schema\Message::FailedAssertion,
|
||||||
|
['value' => $value, 'assertion' => $expected],
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -80,12 +90,12 @@ trait Base
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function completeDefault(Context $context)
|
public function completeDefault(Context $context): mixed
|
||||||
{
|
{
|
||||||
if ($this->required) {
|
if ($this->required) {
|
||||||
$context->addError(
|
$context->addError(
|
||||||
'The mandatory item %path% is missing.',
|
'The mandatory item %path% is missing.',
|
||||||
Nette\Schema\Message::MISSING_ITEM
|
Nette\Schema\Message::MissingItem,
|
||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -94,7 +104,7 @@ trait Base
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function doNormalize($value, Context $context)
|
public function doNormalize(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
if ($this->before) {
|
if ($this->before) {
|
||||||
$value = ($this->before)($value);
|
$value = ($this->before)($value);
|
||||||
@@ -109,92 +119,49 @@ trait Base
|
|||||||
if ($this->deprecated !== null) {
|
if ($this->deprecated !== null) {
|
||||||
$context->addWarning(
|
$context->addWarning(
|
||||||
$this->deprecated,
|
$this->deprecated,
|
||||||
Nette\Schema\Message::DEPRECATED
|
Nette\Schema\Message::Deprecated,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function doValidate($value, string $expected, Context $context): bool
|
private function doTransform(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
if (!Nette\Utils\Validators::is($value, $expected)) {
|
$isOk = $context->createChecker();
|
||||||
$expected = str_replace(['|', ':'], [' or ', ' in range '], $expected);
|
foreach ($this->transforms as $handler) {
|
||||||
$context->addError(
|
$value = $handler($value, $context);
|
||||||
'The %label% %path% expects to be %expected%, %value% given.',
|
if (!$isOk()) {
|
||||||
Nette\Schema\Message::TYPE_MISMATCH,
|
return null;
|
||||||
['value' => $value, 'expected' => $expected]
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function doValidateRange($value, array $range, Context $context, string $types = ''): bool
|
|
||||||
{
|
|
||||||
if (is_array($value) || is_string($value)) {
|
|
||||||
[$length, $label] = is_array($value)
|
|
||||||
? [count($value), 'items']
|
|
||||||
: (in_array('unicode', explode('|', $types), true)
|
|
||||||
? [Nette\Utils\Strings::length($value), 'characters']
|
|
||||||
: [strlen($value), 'bytes']);
|
|
||||||
|
|
||||||
if (!self::isInRange($length, $range)) {
|
|
||||||
$context->addError(
|
|
||||||
"The length of %label% %path% expects to be in range %expected%, %length% $label given.",
|
|
||||||
Nette\Schema\Message::LENGTH_OUT_OF_RANGE,
|
|
||||||
['value' => $value, 'length' => $length, 'expected' => implode('..', $range)]
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} elseif ((is_int($value) || is_float($value)) && !self::isInRange($value, $range)) {
|
|
||||||
$context->addError(
|
|
||||||
'The %label% %path% expects to be in range %expected%, %value% given.',
|
|
||||||
Nette\Schema\Message::VALUE_OUT_OF_RANGE,
|
|
||||||
['value' => $value, 'expected' => implode('..', $range)]
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function isInRange($value, array $range): bool
|
|
||||||
{
|
|
||||||
return ($range[0] === null || $value >= $range[0])
|
|
||||||
&& ($range[1] === null || $value <= $range[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private function doFinalize($value, Context $context)
|
|
||||||
{
|
|
||||||
if ($this->castTo) {
|
|
||||||
if (Nette\Utils\Reflection::isBuiltinType($this->castTo)) {
|
|
||||||
settype($value, $this->castTo);
|
|
||||||
} else {
|
|
||||||
$object = new $this->castTo;
|
|
||||||
foreach ($value as $k => $v) {
|
|
||||||
$object->$k = $v;
|
|
||||||
}
|
|
||||||
|
|
||||||
$value = $object;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->asserts as $i => [$handler, $description]) {
|
|
||||||
if (!$handler($value)) {
|
|
||||||
$expected = $description ?: (is_string($handler) ? "$handler()" : "#$i");
|
|
||||||
$context->addError(
|
|
||||||
'Failed assertion ' . ($description ? "'%assertion%'" : '%assertion%') . ' for %label% %path% with value %value%.',
|
|
||||||
Nette\Schema\Message::FAILED_ASSERTION,
|
|
||||||
['value' => $value, 'assertion' => $expected]
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @deprecated use Nette\Schema\Validators::validateType() */
|
||||||
|
private function doValidate(mixed $value, string $expected, Context $context): bool
|
||||||
|
{
|
||||||
|
$isOk = $context->createChecker();
|
||||||
|
Helpers::validateType($value, $expected, $context);
|
||||||
|
return $isOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use Nette\Schema\Validators::validateRange()
|
||||||
|
* @param array{?float, ?float} $range
|
||||||
|
*/
|
||||||
|
private static function doValidateRange(mixed $value, array $range, Context $context, string $types = ''): bool
|
||||||
|
{
|
||||||
|
$isOk = $context->createChecker();
|
||||||
|
Helpers::validateRange($value, $range, $context, $types);
|
||||||
|
return $isOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @deprecated use doTransform() */
|
||||||
|
private function doFinalize(mixed $value, Context $context): mixed
|
||||||
|
{
|
||||||
|
return $this->doTransform($value, $context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+57
-55
@@ -1,51 +1,45 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema\Elements;
|
namespace Nette\Schema\Elements;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use Nette\Schema\Context;
|
use Nette\Schema\Context;
|
||||||
use Nette\Schema\Helpers;
|
use Nette\Schema\Helpers;
|
||||||
use Nette\Schema\Schema;
|
use Nette\Schema\Schema;
|
||||||
|
use function array_diff_key, array_fill_keys, array_key_exists, array_keys, array_map, array_merge, array_pop, array_values, is_array, is_object, strval;
|
||||||
|
|
||||||
|
|
||||||
final class Structure implements Schema
|
final class Structure implements Schema
|
||||||
{
|
{
|
||||||
use Base;
|
use Base;
|
||||||
use Nette\SmartObject;
|
|
||||||
|
|
||||||
/** @var Schema[] */
|
/** @var Schema[] */
|
||||||
private $items;
|
private array $items;
|
||||||
|
|
||||||
/** @var Schema|null for array|list */
|
/** for array|list */
|
||||||
private $otherItems;
|
private ?Schema $otherItems = null;
|
||||||
|
|
||||||
/** @var array{?int, ?int} */
|
/** @var array{?int, ?int} */
|
||||||
private $range = [null, null];
|
private array $range = [null, null];
|
||||||
|
private bool $skipDefaults = false;
|
||||||
/** @var bool */
|
|
||||||
private $skipDefaults = false;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @param Schema[] $shape */
|
||||||
* @param Schema[] $items
|
public function __construct(array $shape)
|
||||||
*/
|
|
||||||
public function __construct(array $items)
|
|
||||||
{
|
{
|
||||||
(function (Schema ...$items) {})(...array_values($items));
|
(function (Schema ...$items) {})(...array_values($shape));
|
||||||
$this->items = $items;
|
$this->items = $shape;
|
||||||
$this->castTo = 'object';
|
$this->castTo('object');
|
||||||
$this->required = true;
|
$this->required = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function default($value): self
|
public function default(mixed $value): self
|
||||||
{
|
{
|
||||||
throw new Nette\InvalidStateException('Structure cannot have default value.');
|
throw new Nette\InvalidStateException('Structure cannot have default value.');
|
||||||
}
|
}
|
||||||
@@ -65,10 +59,7 @@ final class Structure implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public function otherItems(string|Schema $type = 'mixed'): self
|
||||||
* @param string|Schema $type
|
|
||||||
*/
|
|
||||||
public function otherItems($type = 'mixed'): self
|
|
||||||
{
|
{
|
||||||
$this->otherItems = $type instanceof Schema ? $type : new Type($type);
|
$this->otherItems = $type instanceof Schema ? $type : new Type($type);
|
||||||
return $this;
|
return $this;
|
||||||
@@ -82,13 +73,28 @@ final class Structure implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param Schema[]|self $shape */
|
||||||
|
public function extend(array|self $shape): self
|
||||||
|
{
|
||||||
|
$shape = $shape instanceof self ? $shape->items : $shape;
|
||||||
|
return new self(array_merge($this->items, $shape));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @return Schema[] */
|
||||||
|
public function getShape(): array
|
||||||
|
{
|
||||||
|
return $this->items;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/********************* processing ****************d*g**/
|
/********************* processing ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
public function normalize($value, Context $context)
|
public function normalize(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
if ($prevent = (is_array($value) && isset($value[Helpers::PREVENT_MERGING]))) {
|
if ($prevent = (is_array($value) && isset($value[Helpers::PreventMerging]))) {
|
||||||
unset($value[Helpers::PREVENT_MERGING]);
|
unset($value[Helpers::PreventMerging]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$value = $this->doNormalize($value, $context);
|
$value = $this->doNormalize($value, $context);
|
||||||
@@ -107,7 +113,7 @@ final class Structure implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($prevent) {
|
if ($prevent) {
|
||||||
$value[Helpers::PREVENT_MERGING] = true;
|
$value[Helpers::PreventMerging] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,37 +121,34 @@ final class Structure implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function merge($value, $base)
|
public function merge(mixed $value, mixed $base): mixed
|
||||||
{
|
{
|
||||||
if (is_array($value) && isset($value[Helpers::PREVENT_MERGING])) {
|
if (is_array($value) && isset($value[Helpers::PreventMerging])) {
|
||||||
unset($value[Helpers::PREVENT_MERGING]);
|
unset($value[Helpers::PreventMerging]);
|
||||||
$base = null;
|
$base = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($value) && is_array($base)) {
|
if (is_array($value) && is_array($base)) {
|
||||||
$index = 0;
|
$index = $this->otherItems === null ? null : 0;
|
||||||
foreach ($value as $key => $val) {
|
foreach ($value as $key => $val) {
|
||||||
if ($key === $index) {
|
if ($key === $index) {
|
||||||
$base[] = $val;
|
$base[] = $val;
|
||||||
$index++;
|
$index++;
|
||||||
} elseif (array_key_exists($key, $base)) {
|
|
||||||
$itemSchema = $this->items[$key] ?? $this->otherItems;
|
|
||||||
$base[$key] = $itemSchema
|
|
||||||
? $itemSchema->merge($val, $base[$key])
|
|
||||||
: Helpers::merge($val, $base[$key]);
|
|
||||||
} else {
|
} else {
|
||||||
$base[$key] = $val;
|
$base[$key] = array_key_exists($key, $base) && ($itemSchema = $this->items[$key] ?? $this->otherItems)
|
||||||
|
? $itemSchema->merge($val, $base[$key])
|
||||||
|
: $val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $base;
|
return $base;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Helpers::merge($value, $base);
|
return $value ?? $base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function complete($value, Context $context)
|
public function complete(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
if ($value === null) {
|
if ($value === null) {
|
||||||
$value = []; // is unable to distinguish null from array in NEON
|
$value = []; // is unable to distinguish null from array in NEON
|
||||||
@@ -153,25 +156,30 @@ final class Structure implements Schema
|
|||||||
|
|
||||||
$this->doDeprecation($context);
|
$this->doDeprecation($context);
|
||||||
|
|
||||||
if (!$this->doValidate($value, 'array', $context)
|
$isOk = $context->createChecker();
|
||||||
|| !$this->doValidateRange($value, $this->range, $context)
|
Helpers::validateType($value, 'array', $context);
|
||||||
) {
|
$isOk() && Helpers::validateRange($value, $this->range, $context);
|
||||||
return;
|
$isOk() && $this->validateItems($value, $context);
|
||||||
|
$isOk() && $value = $this->doTransform($value, $context);
|
||||||
|
return $isOk() ? $value : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$errCount = count($context->errors);
|
|
||||||
|
/** @param array<mixed> $value */
|
||||||
|
private function validateItems(array &$value, Context $context): void
|
||||||
|
{
|
||||||
$items = $this->items;
|
$items = $this->items;
|
||||||
if ($extraKeys = array_keys(array_diff_key($value, $items))) {
|
if ($extraKeys = array_keys(array_diff_key($value, $items))) {
|
||||||
if ($this->otherItems) {
|
if ($this->otherItems) {
|
||||||
$items += array_fill_keys($extraKeys, $this->otherItems);
|
$items += array_fill_keys($extraKeys, $this->otherItems);
|
||||||
} else {
|
} else {
|
||||||
$keys = array_map('strval', array_keys($items));
|
$keys = array_map(strval(...), array_keys($items));
|
||||||
foreach ($extraKeys as $key) {
|
foreach ($extraKeys as $key) {
|
||||||
$hint = Nette\Utils\ObjectHelpers::getSuggestion($keys, (string) $key);
|
$hint = Nette\Utils\Helpers::getSuggestion($keys, (string) $key);
|
||||||
$context->addError(
|
$context->addError(
|
||||||
'Unexpected item %path%' . ($hint ? ", did you mean '%hint%'?" : '.'),
|
'Unexpected item %path%' . ($hint ? ", did you mean '%hint%'?" : '.'),
|
||||||
Nette\Schema\Message::UNEXPECTED_ITEM,
|
Nette\Schema\Message::UnexpectedItem,
|
||||||
['hint' => $hint]
|
['hint' => $hint],
|
||||||
)->path[] = $key;
|
)->path[] = $key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -190,16 +198,10 @@ final class Structure implements Schema
|
|||||||
|
|
||||||
array_pop($context->path);
|
array_pop($context->path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($context->errors) > $errCount) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->doFinalize($value, $context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function completeDefault(Context $context)
|
public function completeDefault(Context $context): mixed
|
||||||
{
|
{
|
||||||
return $this->required
|
return $this->required
|
||||||
? $this->complete([], $context)
|
? $this->complete([], $context)
|
||||||
|
|||||||
+40
-62
@@ -1,43 +1,31 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema\Elements;
|
namespace Nette\Schema\Elements;
|
||||||
|
|
||||||
use Nette;
|
|
||||||
use Nette\Schema\Context;
|
use Nette\Schema\Context;
|
||||||
use Nette\Schema\DynamicParameter;
|
use Nette\Schema\DynamicParameter;
|
||||||
use Nette\Schema\Helpers;
|
use Nette\Schema\Helpers;
|
||||||
use Nette\Schema\Schema;
|
use Nette\Schema\Schema;
|
||||||
|
use function array_key_exists, array_pop, implode, is_array, str_replace, strpos;
|
||||||
|
|
||||||
|
|
||||||
final class Type implements Schema
|
final class Type implements Schema
|
||||||
{
|
{
|
||||||
use Base;
|
use Base;
|
||||||
use Nette\SmartObject;
|
|
||||||
|
|
||||||
/** @var string */
|
private string $type;
|
||||||
private $type;
|
private ?Schema $itemsValue = null;
|
||||||
|
private ?Schema $itemsKey = null;
|
||||||
/** @var Schema|null for arrays */
|
|
||||||
private $itemsValue;
|
|
||||||
|
|
||||||
/** @var Schema|null for arrays */
|
|
||||||
private $itemsKey;
|
|
||||||
|
|
||||||
/** @var array{?float, ?float} */
|
/** @var array{?float, ?float} */
|
||||||
private $range = [null, null];
|
private array $range = [null, null];
|
||||||
|
private ?string $pattern = null;
|
||||||
/** @var string|null */
|
private bool $merge = true;
|
||||||
private $pattern;
|
|
||||||
|
|
||||||
/** @var bool */
|
|
||||||
private $merge = true;
|
|
||||||
|
|
||||||
|
|
||||||
public function __construct(string $type)
|
public function __construct(string $type)
|
||||||
@@ -84,11 +72,9 @@ final class Type implements Schema
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string|Schema $valueType
|
|
||||||
* @param string|Schema|null $keyType
|
|
||||||
* @internal use arrayOf() or listOf()
|
* @internal use arrayOf() or listOf()
|
||||||
*/
|
*/
|
||||||
public function items($valueType = 'mixed', $keyType = null): self
|
public function items(string|Schema $valueType = 'mixed', string|Schema|null $keyType = null): self
|
||||||
{
|
{
|
||||||
$this->itemsValue = $valueType instanceof Schema
|
$this->itemsValue = $valueType instanceof Schema
|
||||||
? $valueType
|
? $valueType
|
||||||
@@ -110,10 +96,10 @@ final class Type implements Schema
|
|||||||
/********************* processing ****************d*g**/
|
/********************* processing ****************d*g**/
|
||||||
|
|
||||||
|
|
||||||
public function normalize($value, Context $context)
|
public function normalize(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
if ($prevent = (is_array($value) && isset($value[Helpers::PREVENT_MERGING]))) {
|
if ($prevent = (is_array($value) && isset($value[Helpers::PreventMerging]))) {
|
||||||
unset($value[Helpers::PREVENT_MERGING]);
|
unset($value[Helpers::PreventMerging]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$value = $this->doNormalize($value, $context);
|
$value = $this->doNormalize($value, $context);
|
||||||
@@ -134,17 +120,17 @@ final class Type implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($prevent && is_array($value)) {
|
if ($prevent && is_array($value)) {
|
||||||
$value[Helpers::PREVENT_MERGING] = true;
|
$value[Helpers::PreventMerging] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function merge($value, $base)
|
public function merge(mixed $value, mixed $base): mixed
|
||||||
{
|
{
|
||||||
if (is_array($value) && isset($value[Helpers::PREVENT_MERGING])) {
|
if (is_array($value) && isset($value[Helpers::PreventMerging])) {
|
||||||
unset($value[Helpers::PREVENT_MERGING]);
|
unset($value[Helpers::PreventMerging]);
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,11 +154,11 @@ final class Type implements Schema
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function complete($value, Context $context)
|
public function complete(mixed $value, Context $context): mixed
|
||||||
{
|
{
|
||||||
$merge = $this->merge;
|
$merge = $this->merge;
|
||||||
if (is_array($value) && isset($value[Helpers::PREVENT_MERGING])) {
|
if (is_array($value) && isset($value[Helpers::PreventMerging])) {
|
||||||
unset($value[Helpers::PREVENT_MERGING]);
|
unset($value[Helpers::PreventMerging]);
|
||||||
$merge = false;
|
$merge = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,49 +168,41 @@ final class Type implements Schema
|
|||||||
|
|
||||||
$this->doDeprecation($context);
|
$this->doDeprecation($context);
|
||||||
|
|
||||||
if (!$this->doValidate($value, $this->type, $context)
|
$isOk = $context->createChecker();
|
||||||
|| !$this->doValidateRange($value, $this->range, $context, $this->type)
|
Helpers::validateType($value, $this->type, $context);
|
||||||
) {
|
$isOk() && Helpers::validateRange($value, $this->range, $context, $this->type);
|
||||||
return;
|
$isOk() && $value !== null && $this->pattern !== null && Helpers::validatePattern($value, $this->pattern, $context);
|
||||||
}
|
$isOk() && is_array($value) && $this->validateItems($value, $context);
|
||||||
|
$isOk() && $merge && $value = Helpers::merge($value, $this->default);
|
||||||
if ($value !== null && $this->pattern !== null && !preg_match("\x01^(?:$this->pattern)$\x01Du", $value)) {
|
$isOk() && $value = $this->doTransform($value, $context);
|
||||||
$context->addError(
|
if (!$isOk()) {
|
||||||
"The %label% %path% expects to match pattern '%pattern%', %value% given.",
|
return null;
|
||||||
Nette\Schema\Message::PATTERN_MISMATCH,
|
|
||||||
['value' => $value, 'pattern' => $this->pattern]
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($value instanceof DynamicParameter) {
|
if ($value instanceof DynamicParameter) {
|
||||||
$expected = $this->type . ($this->range === [null, null] ? '' : ':' . implode('..', $this->range));
|
$expected = $this->type . ($this->range === [null, null] ? '' : ':' . implode('..', $this->range));
|
||||||
$context->dynamics[] = [$value, str_replace(DynamicParameter::class . '|', '', $expected)];
|
$context->dynamics[] = [$value, str_replace(DynamicParameter::class . '|', '', $expected), $context->path];
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param array<mixed> $value */
|
||||||
|
private function validateItems(array &$value, Context $context): void
|
||||||
|
{
|
||||||
|
if (!$this->itemsValue) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->itemsValue) {
|
|
||||||
$errCount = count($context->errors);
|
|
||||||
$res = [];
|
$res = [];
|
||||||
foreach ($value as $key => $val) {
|
foreach ($value as $key => $val) {
|
||||||
$context->path[] = $key;
|
$context->path[] = $key;
|
||||||
$context->isKey = true;
|
$context->isKey = true;
|
||||||
$key = $this->itemsKey ? $this->itemsKey->complete($key, $context) : $key;
|
$key = $this->itemsKey ? $this->itemsKey->complete($key, $context) : $key;
|
||||||
$context->isKey = false;
|
$context->isKey = false;
|
||||||
$res[$key] = $this->itemsValue->complete($val, $context);
|
$res[$key ?? ''] = $this->itemsValue->complete($val, $context);
|
||||||
array_pop($context->path);
|
array_pop($context->path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($context->errors) > $errCount) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$value = $res;
|
$value = $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($merge) {
|
|
||||||
$value = Helpers::merge($value, $this->default);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->doFinalize($value, $context);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-33
@@ -1,18 +1,17 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use Nette\Schema\Elements\AnyOf;
|
use Nette\Schema\Elements\AnyOf;
|
||||||
use Nette\Schema\Elements\Structure;
|
use Nette\Schema\Elements\Structure;
|
||||||
use Nette\Schema\Elements\Type;
|
use Nette\Schema\Elements\Type;
|
||||||
|
use function is_object;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,7 +23,6 @@ use Nette\Schema\Elements\Type;
|
|||||||
* @method static Type float($default = null)
|
* @method static Type float($default = null)
|
||||||
* @method static Type bool($default = null)
|
* @method static Type bool($default = null)
|
||||||
* @method static Type null()
|
* @method static Type null()
|
||||||
* @method static Type array($default = [])
|
|
||||||
* @method static Type list($default = [])
|
* @method static Type list($default = [])
|
||||||
* @method static Type mixed($default = null)
|
* @method static Type mixed($default = null)
|
||||||
* @method static Type email($default = null)
|
* @method static Type email($default = null)
|
||||||
@@ -32,8 +30,7 @@ use Nette\Schema\Elements\Type;
|
|||||||
*/
|
*/
|
||||||
final class Expect
|
final class Expect
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
/** @param list<mixed> $args */
|
||||||
|
|
||||||
public static function __callStatic(string $name, array $args): Type
|
public static function __callStatic(string $name, array $args): Type
|
||||||
{
|
{
|
||||||
$type = new Type($name);
|
$type = new Type($name);
|
||||||
@@ -51,39 +48,34 @@ final class Expect
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public static function anyOf(mixed ...$set): AnyOf
|
||||||
* @param mixed|Schema ...$set
|
|
||||||
*/
|
|
||||||
public static function anyOf(...$set): AnyOf
|
|
||||||
{
|
{
|
||||||
return new AnyOf(...$set);
|
return new AnyOf(...$set);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @param Schema[] $shape */
|
||||||
* @param Schema[] $items
|
public static function structure(array $shape): Structure
|
||||||
*/
|
|
||||||
public static function structure(array $items): Structure
|
|
||||||
{
|
{
|
||||||
return new Structure($items);
|
return new Structure($shape);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @param array<string, Schema> $items */
|
||||||
* @param object $object
|
public static function from(object $object, array $items = []): Structure
|
||||||
*/
|
|
||||||
public static function from($object, array $items = []): Structure
|
|
||||||
{
|
{
|
||||||
$ro = new \ReflectionObject($object);
|
$ro = new \ReflectionObject($object);
|
||||||
foreach ($ro->getProperties() as $prop) {
|
$props = $ro->hasMethod('__construct')
|
||||||
|
? $ro->getMethod('__construct')->getParameters()
|
||||||
|
: $ro->getProperties();
|
||||||
|
|
||||||
|
foreach ($props as $prop) {
|
||||||
|
$name = $prop->getName();
|
||||||
|
if (!isset($items[$name])) {
|
||||||
$type = Helpers::getPropertyType($prop) ?? 'mixed';
|
$type = Helpers::getPropertyType($prop) ?? 'mixed';
|
||||||
$item = &$items[$prop->getName()];
|
|
||||||
if (!$item) {
|
|
||||||
$item = new Type($type);
|
$item = new Type($type);
|
||||||
if (PHP_VERSION_ID >= 70400 && !$prop->isInitialized($object)) {
|
if ($prop instanceof \ReflectionProperty ? $prop->isInitialized($object) : $prop->isOptional()) {
|
||||||
$item->required();
|
$def = ($prop instanceof \ReflectionProperty ? $prop->getValue($object) : $prop->getDefaultValue());
|
||||||
} else {
|
|
||||||
$def = $prop->getValue($object);
|
|
||||||
if (is_object($def)) {
|
if (is_object($def)) {
|
||||||
$item = static::from($def);
|
$item = static::from($def);
|
||||||
} elseif ($def === null && !Nette\Utils\Validators::is(null, $type)) {
|
} elseif ($def === null && !Nette\Utils\Validators::is(null, $type)) {
|
||||||
@@ -91,7 +83,10 @@ final class Expect
|
|||||||
} else {
|
} else {
|
||||||
$item->default($def);
|
$item->default($def);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$item->required();
|
||||||
}
|
}
|
||||||
|
$items[$name] = $item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,19 +95,24 @@ final class Expect
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string|Schema $valueType
|
* @param mixed[] $shape
|
||||||
* @param string|Schema|null $keyType
|
|
||||||
*/
|
*/
|
||||||
public static function arrayOf($valueType, $keyType = null): Type
|
public static function array(?array $shape = []): Structure|Type
|
||||||
|
{
|
||||||
|
$shape ??= [];
|
||||||
|
return Nette\Utils\Arrays::first($shape) instanceof Schema
|
||||||
|
? (new Structure($shape))->castTo('array')
|
||||||
|
: (new Type('array'))->default($shape);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function arrayOf(string|Schema $valueType, string|Schema|null $keyType = null): Type
|
||||||
{
|
{
|
||||||
return (new Type('array'))->items($valueType, $keyType);
|
return (new Type('array'))->items($valueType, $keyType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public static function listOf(string|Schema $type): Type
|
||||||
* @param string|Schema $type
|
|
||||||
*/
|
|
||||||
public static function listOf($type): Type
|
|
||||||
{
|
{
|
||||||
return (new Type('list'))->items($type);
|
return (new Type('list'))->items($type);
|
||||||
}
|
}
|
||||||
|
|||||||
+101
-26
@@ -1,16 +1,15 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use Nette\Utils\Reflection;
|
use Nette\Utils\Reflection;
|
||||||
|
use function count, explode, get_debug_type, implode, in_array, is_array, is_float, is_int, is_object, is_scalar, is_string, method_exists, preg_match, preg_quote, preg_replace, preg_replace_callback, settype, str_replace, strlen, trim, var_export;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,17 +19,16 @@ final class Helpers
|
|||||||
{
|
{
|
||||||
use Nette\StaticClass;
|
use Nette\StaticClass;
|
||||||
|
|
||||||
public const PREVENT_MERGING = '_prevent_merging';
|
public const PreventMerging = '_prevent_merging';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merges dataset. Left has higher priority than right one.
|
* Merges dataset. Left has higher priority than right one.
|
||||||
* @return array|string
|
|
||||||
*/
|
*/
|
||||||
public static function merge($value, $base)
|
public static function merge(mixed $value, mixed $base): mixed
|
||||||
{
|
{
|
||||||
if (is_array($value) && isset($value[self::PREVENT_MERGING])) {
|
if (is_array($value) && isset($value[self::PreventMerging])) {
|
||||||
unset($value[self::PREVENT_MERGING]);
|
unset($value[self::PreventMerging]);
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,17 +54,16 @@ final class Helpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static function getPropertyType(\ReflectionProperty $prop): ?string
|
public static function getPropertyType(\ReflectionProperty|\ReflectionParameter $prop): ?string
|
||||||
{
|
{
|
||||||
if (!class_exists(Nette\Utils\Type::class)) {
|
if ($type = Nette\Utils\Type::fromReflection($prop)) {
|
||||||
throw new Nette\NotSupportedException('Expect::from() requires nette/utils 3.x');
|
|
||||||
} elseif ($type = Nette\Utils\Type::fromReflection($prop)) {
|
|
||||||
return (string) $type;
|
return (string) $type;
|
||||||
} elseif ($type = preg_replace('#\s.*#', '', (string) self::parseAnnotation($prop, 'var'))) {
|
} elseif (
|
||||||
|
($prop instanceof \ReflectionProperty)
|
||||||
|
&& ($type = preg_replace('#\s.*#', '', (string) self::parseAnnotation($prop, 'var')))
|
||||||
|
) {
|
||||||
$class = Reflection::getPropertyDeclaringClass($prop);
|
$class = Reflection::getPropertyDeclaringClass($prop);
|
||||||
return preg_replace_callback('#[\w\\\\]+#', function ($m) use ($class) {
|
return preg_replace_callback('#[\w\\\]+#', fn($m) => Reflection::expandClassName($m[0], $class), $type);
|
||||||
return Reflection::expandClassName($m[0], $class);
|
|
||||||
}, $type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -75,9 +72,9 @@ final class Helpers
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an annotation value.
|
* Returns an annotation value.
|
||||||
* @param \ReflectionProperty $ref
|
* @param \ReflectionClass<object>|\ReflectionProperty $ref
|
||||||
*/
|
*/
|
||||||
public static function parseAnnotation(\Reflector $ref, string $name): ?string
|
public static function parseAnnotation(\ReflectionClass|\ReflectionProperty $ref, string $name): ?string
|
||||||
{
|
{
|
||||||
if (!Reflection::areCommentsAvailable()) {
|
if (!Reflection::areCommentsAvailable()) {
|
||||||
throw new Nette\InvalidStateException('You have to enable phpDoc comments in opcode cache.');
|
throw new Nette\InvalidStateException('You have to enable phpDoc comments in opcode cache.');
|
||||||
@@ -92,19 +89,97 @@ final class Helpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
public static function formatValue(mixed $value): string
|
||||||
* @param mixed $value
|
|
||||||
*/
|
|
||||||
public static function formatValue($value): string
|
|
||||||
{
|
{
|
||||||
if (is_object($value)) {
|
if ($value instanceof DynamicParameter) {
|
||||||
return 'object ' . get_class($value);
|
return 'dynamic';
|
||||||
|
} elseif (is_object($value)) {
|
||||||
|
return 'object ' . $value::class;
|
||||||
} elseif (is_string($value)) {
|
} elseif (is_string($value)) {
|
||||||
return "'" . Nette\Utils\Strings::truncate($value, 15, '...') . "'";
|
return "'" . Nette\Utils\Strings::truncate($value, 15, '...') . "'";
|
||||||
} elseif (is_scalar($value)) {
|
} elseif (is_scalar($value)) {
|
||||||
return var_export($value, true);
|
return var_export($value, return: true);
|
||||||
} else {
|
} else {
|
||||||
return strtolower(gettype($value));
|
return get_debug_type($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function validateType(mixed $value, string $expected, Context $context): void
|
||||||
|
{
|
||||||
|
if (!Nette\Utils\Validators::is($value, $expected)) {
|
||||||
|
$expected = str_replace(DynamicParameter::class . '|', '', $expected);
|
||||||
|
$expected = str_replace(['|', ':'], [' or ', ' in range '], $expected);
|
||||||
|
$context->addError(
|
||||||
|
'The %label% %path% expects to be %expected%, %value% given.',
|
||||||
|
Message::TypeMismatch,
|
||||||
|
['value' => $value, 'expected' => $expected],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param array{?float, ?float} $range */
|
||||||
|
public static function validateRange(mixed $value, array $range, Context $context, string $types = ''): void
|
||||||
|
{
|
||||||
|
if (is_array($value) || is_string($value)) {
|
||||||
|
[$length, $label] = is_array($value)
|
||||||
|
? [count($value), 'items']
|
||||||
|
: (in_array('unicode', explode('|', $types), strict: true)
|
||||||
|
? [Nette\Utils\Strings::length($value), 'characters']
|
||||||
|
: [strlen($value), 'bytes']);
|
||||||
|
|
||||||
|
if (!self::isInRange($length, $range)) {
|
||||||
|
$context->addError(
|
||||||
|
"The length of %label% %path% expects to be in range %expected%, %length% $label given.",
|
||||||
|
Message::LengthOutOfRange,
|
||||||
|
['value' => $value, 'length' => $length, 'expected' => implode('..', $range)],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} elseif ((is_int($value) || is_float($value)) && !self::isInRange($value, $range)) {
|
||||||
|
$context->addError(
|
||||||
|
'The %label% %path% expects to be in range %expected%, %value% given.',
|
||||||
|
Message::ValueOutOfRange,
|
||||||
|
['value' => $value, 'expected' => implode('..', $range)],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param array{?float, ?float} $range */
|
||||||
|
public static function isInRange(mixed $value, array $range): bool
|
||||||
|
{
|
||||||
|
return ($range[0] === null || $value >= $range[0])
|
||||||
|
&& ($range[1] === null || $value <= $range[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function validatePattern(string $value, string $pattern, Context $context): void
|
||||||
|
{
|
||||||
|
if (!preg_match("\x01^(?:$pattern)$\x01Du", $value)) {
|
||||||
|
$context->addError(
|
||||||
|
"The %label% %path% expects to match pattern '%pattern%', %value% given.",
|
||||||
|
Message::PatternMismatch,
|
||||||
|
['value' => $value, 'pattern' => $pattern],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @return \Closure(mixed): mixed */
|
||||||
|
public static function getCastStrategy(string $type): \Closure
|
||||||
|
{
|
||||||
|
if (Nette\Utils\Validators::isBuiltinType($type)) {
|
||||||
|
return static function ($value) use ($type) {
|
||||||
|
settype($value, $type);
|
||||||
|
return $value;
|
||||||
|
};
|
||||||
|
} elseif (method_exists($type, '__construct')) {
|
||||||
|
return static fn($value) => is_array($value) || $value instanceof \stdClass
|
||||||
|
? new $type(...(array) $value)
|
||||||
|
: new $type($value);
|
||||||
|
} else {
|
||||||
|
return static fn($value) => Nette\Utils\Arrays::toObject((array) $value, new $type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-29
@@ -1,64 +1,74 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
use Nette;
|
use function implode, preg_replace_callback;
|
||||||
|
|
||||||
|
|
||||||
final class Message
|
final class Message
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
/** variables: {value: mixed, expected: string} */
|
||||||
|
public const TypeMismatch = 'schema.typeMismatch';
|
||||||
|
|
||||||
/** variables: {value: mixed, expected: string} */
|
/** variables: {value: mixed, expected: string} */
|
||||||
public const TYPE_MISMATCH = 'schema.typeMismatch';
|
public const ValueOutOfRange = 'schema.valueOutOfRange';
|
||||||
|
|
||||||
/** variables: {value: mixed, expected: string} */
|
|
||||||
public const VALUE_OUT_OF_RANGE = 'schema.valueOutOfRange';
|
|
||||||
|
|
||||||
/** variables: {value: mixed, length: int, expected: string} */
|
/** variables: {value: mixed, length: int, expected: string} */
|
||||||
public const LENGTH_OUT_OF_RANGE = 'schema.lengthOutOfRange';
|
public const LengthOutOfRange = 'schema.lengthOutOfRange';
|
||||||
|
|
||||||
/** variables: {value: string, pattern: string} */
|
/** variables: {value: string, pattern: string} */
|
||||||
public const PATTERN_MISMATCH = 'schema.patternMismatch';
|
public const PatternMismatch = 'schema.patternMismatch';
|
||||||
|
|
||||||
/** variables: {value: mixed, assertion: string} */
|
/** variables: {value: mixed, assertion: string} */
|
||||||
public const FAILED_ASSERTION = 'schema.failedAssertion';
|
public const FailedAssertion = 'schema.failedAssertion';
|
||||||
|
|
||||||
/** no variables */
|
/** no variables */
|
||||||
public const MISSING_ITEM = 'schema.missingItem';
|
public const MissingItem = 'schema.missingItem';
|
||||||
|
|
||||||
/** variables: {hint: string} */
|
/** variables: {hint: string} */
|
||||||
public const UNEXPECTED_ITEM = 'schema.unexpectedItem';
|
public const UnexpectedItem = 'schema.unexpectedItem';
|
||||||
|
|
||||||
/** no variables */
|
/** no variables */
|
||||||
public const DEPRECATED = 'schema.deprecated';
|
public const Deprecated = 'schema.deprecated';
|
||||||
|
|
||||||
/** @var string */
|
/** @deprecated use Message::TypeMismatch */
|
||||||
public $message;
|
public const TYPE_MISMATCH = self::TypeMismatch;
|
||||||
|
|
||||||
/** @var string */
|
/** @deprecated use Message::ValueOutOfRange */
|
||||||
public $code;
|
public const VALUE_OUT_OF_RANGE = self::ValueOutOfRange;
|
||||||
|
|
||||||
/** @var string[] */
|
/** @deprecated use Message::LengthOutOfRange */
|
||||||
public $path;
|
public const LENGTH_OUT_OF_RANGE = self::LengthOutOfRange;
|
||||||
|
|
||||||
/** @var string[] */
|
/** @deprecated use Message::PatternMismatch */
|
||||||
public $variables;
|
public const PATTERN_MISMATCH = self::PatternMismatch;
|
||||||
|
|
||||||
|
/** @deprecated use Message::FailedAssertion */
|
||||||
|
public const FAILED_ASSERTION = self::FailedAssertion;
|
||||||
|
|
||||||
|
/** @deprecated use Message::MissingItem */
|
||||||
|
public const MISSING_ITEM = self::MissingItem;
|
||||||
|
|
||||||
|
/** @deprecated use Message::UnexpectedItem */
|
||||||
|
public const UNEXPECTED_ITEM = self::UnexpectedItem;
|
||||||
|
|
||||||
|
/** @deprecated use Message::Deprecated */
|
||||||
|
public const DEPRECATED = self::Deprecated;
|
||||||
|
|
||||||
|
|
||||||
public function __construct(string $message, string $code, array $path, array $variables = [])
|
public function __construct(
|
||||||
{
|
public string $message,
|
||||||
$this->message = $message;
|
public string $code,
|
||||||
$this->code = $code;
|
/** @var list<int|string> */
|
||||||
$this->path = $path;
|
public array $path,
|
||||||
$this->variables = $variables;
|
/** @var array<string, mixed> */
|
||||||
|
public array $variables = [],
|
||||||
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+12
-23
@@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
@@ -17,19 +15,13 @@ use Nette;
|
|||||||
*/
|
*/
|
||||||
final class Processor
|
final class Processor
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
/** @var list<\Closure(Context): void> */
|
||||||
|
public array $onNewContext = [];
|
||||||
/** @var array */
|
private Context $context;
|
||||||
public $onNewContext = [];
|
private bool $skipDefaults = false;
|
||||||
|
|
||||||
/** @var Context|null */
|
|
||||||
private $context;
|
|
||||||
|
|
||||||
/** @var bool */
|
|
||||||
private $skipDefaults;
|
|
||||||
|
|
||||||
|
|
||||||
public function skipDefaults(bool $value = true)
|
public function skipDefaults(bool $value = true): void
|
||||||
{
|
{
|
||||||
$this->skipDefaults = $value;
|
$this->skipDefaults = $value;
|
||||||
}
|
}
|
||||||
@@ -37,10 +29,9 @@ final class Processor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalizes and validates data. Result is a clean completed data.
|
* Normalizes and validates data. Result is a clean completed data.
|
||||||
* @return mixed
|
|
||||||
* @throws ValidationException
|
* @throws ValidationException
|
||||||
*/
|
*/
|
||||||
public function process(Schema $schema, $data)
|
public function process(Schema $schema, mixed $data): mixed
|
||||||
{
|
{
|
||||||
$this->createContext();
|
$this->createContext();
|
||||||
$data = $schema->normalize($data, $this->context);
|
$data = $schema->normalize($data, $this->context);
|
||||||
@@ -53,10 +44,10 @@ final class Processor
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalizes and validates and merges multiple data. Result is a clean completed data.
|
* Normalizes and validates and merges multiple data. Result is a clean completed data.
|
||||||
* @return mixed
|
* @param list<mixed> $dataset
|
||||||
* @throws ValidationException
|
* @throws ValidationException
|
||||||
*/
|
*/
|
||||||
public function processMultiple(Schema $schema, array $dataset)
|
public function processMultiple(Schema $schema, array $dataset): mixed
|
||||||
{
|
{
|
||||||
$this->createContext();
|
$this->createContext();
|
||||||
$flatten = null;
|
$flatten = null;
|
||||||
@@ -74,9 +65,7 @@ final class Processor
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @return list<string> */
|
||||||
* @return string[]
|
|
||||||
*/
|
|
||||||
public function getWarnings(): array
|
public function getWarnings(): array
|
||||||
{
|
{
|
||||||
$res = [];
|
$res = [];
|
||||||
@@ -96,10 +85,10 @@ final class Processor
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private function createContext()
|
private function createContext(): void
|
||||||
{
|
{
|
||||||
$this->context = new Context;
|
$this->context = new Context;
|
||||||
$this->context->skipDefaults = $this->skipDefaults;
|
$this->context->skipDefaults = $this->skipDefaults;
|
||||||
$this->onNewContext($this->context);
|
Nette\Utils\Arrays::invoke($this->onNewContext, $this->context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-6
@@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
|
|
||||||
@@ -16,19 +14,19 @@ interface Schema
|
|||||||
* Normalization.
|
* Normalization.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function normalize($value, Context $context);
|
function normalize(mixed $value, Context $context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merging.
|
* Merging.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function merge($value, $base);
|
function merge(mixed $value, mixed $base);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validation and finalization.
|
* Validation and finalization.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function complete($value, Context $context);
|
function complete(mixed $value, Context $context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return mixed
|
* @return mixed
|
||||||
|
|||||||
+9
-20
@@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Schema;
|
namespace Nette\Schema;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
@@ -17,23 +15,16 @@ use Nette;
|
|||||||
*/
|
*/
|
||||||
class ValidationException extends Nette\InvalidStateException
|
class ValidationException extends Nette\InvalidStateException
|
||||||
{
|
{
|
||||||
/** @var Message[] */
|
public function __construct(
|
||||||
private $messages;
|
?string $message,
|
||||||
|
/** @var list<Message> */
|
||||||
|
private array $messages = [],
|
||||||
/**
|
) {
|
||||||
* @param Message[] $messages
|
parent::__construct($message ?? $messages[0]->toString());
|
||||||
*/
|
|
||||||
public function __construct(?string $message, array $messages = [])
|
|
||||||
{
|
|
||||||
parent::__construct($message ?: $messages[0]->toString());
|
|
||||||
$this->messages = $messages;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @return list<string> */
|
||||||
* @return string[]
|
|
||||||
*/
|
|
||||||
public function getMessages(): array
|
public function getMessages(): array
|
||||||
{
|
{
|
||||||
$res = [];
|
$res = [];
|
||||||
@@ -45,9 +36,7 @@ class ValidationException extends Nette\InvalidStateException
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @return list<Message> */
|
||||||
* @return Message[]
|
|
||||||
*/
|
|
||||||
public function getMessageObjects(): array
|
public function getMessageObjects(): array
|
||||||
{
|
{
|
||||||
return $this->messages;
|
return $this->messages;
|
||||||
|
|||||||
+1
-3
@@ -1,6 +1,4 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace PHPSTORM_META;
|
namespace PHPSTORM_META;
|
||||||
|
|
||||||
|
|||||||
Vendored
+17
-8
@@ -15,29 +15,33 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.0 <8.3"
|
"php": "8.2 - 8.5"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"nette/tester": "^2.4",
|
"nette/tester": "^2.5",
|
||||||
"tracy/tracy": "^2.9",
|
"tracy/tracy": "^2.9",
|
||||||
"phpstan/phpstan": "^1.0",
|
"phpstan/phpstan": "^2.1@stable",
|
||||||
"jetbrains/phpstorm-attributes": "dev-master"
|
"phpstan/extension-installer": "^1.4@stable",
|
||||||
|
"nette/phpstan-rules": "^1.0",
|
||||||
|
"jetbrains/phpstorm-attributes": "^1.2"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"nette/finder": "<3",
|
"nette/finder": "<3",
|
||||||
"nette/schema": "<1.2.2"
|
"nette/schema": "<1.2.2"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
|
"ext-iconv": "to use Strings::chr(), ord() and reverse()",
|
||||||
"ext-json": "to use Nette\\Utils\\Json",
|
"ext-json": "to use Nette\\Utils\\Json",
|
||||||
"ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
|
"ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
|
||||||
"ext-mbstring": "to use Strings::lower() etc...",
|
"ext-mbstring": "to use Strings::lower() etc...",
|
||||||
"ext-xml": "to use Strings::length() etc. when mbstring is not available",
|
|
||||||
"ext-gd": "to use Image",
|
"ext-gd": "to use Image",
|
||||||
"ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
|
"ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"classmap": ["src/"]
|
"classmap": ["src/"],
|
||||||
|
"psr-4": {
|
||||||
|
"Nette\\": "src"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -46,7 +50,12 @@
|
|||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "4.0-dev"
|
"dev-master": "4.1-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"phpstan/extension-installer": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+23
-24
@@ -1,5 +1,4 @@
|
|||||||
Nette Utility Classes
|
[](https://doc.nette.org/en/utils)
|
||||||
=====================
|
|
||||||
|
|
||||||
[](https://packagist.org/packages/nette/utils)
|
[](https://packagist.org/packages/nette/utils)
|
||||||
[](https://github.com/nette/utils/actions)
|
[](https://github.com/nette/utils/actions)
|
||||||
@@ -11,25 +10,27 @@ Nette Utility Classes
|
|||||||
Introduction
|
Introduction
|
||||||
------------
|
------------
|
||||||
|
|
||||||
In package nette/utils you will find a set of [useful classes](https://doc.nette.org/utils) for everyday use:
|
In package nette/utils you will find a set of useful classes for everyday use:
|
||||||
|
|
||||||
- [Arrays](https://doc.nette.org/utils/arrays) - manipulate arrays
|
✅ [Arrays](https://doc.nette.org/utils/arrays)<br>
|
||||||
- [Callback](https://doc.nette.org/utils/callback) - PHP callbacks
|
✅ [Callback](https://doc.nette.org/utils/callback) - PHP callbacks<br>
|
||||||
- [Date and Time](https://doc.nette.org/utils/datetime) - modify times and dates
|
✅ [Filesystem](https://doc.nette.org/utils/filesystem) - copying, renaming, …<br>
|
||||||
- [Filesystem](https://doc.nette.org/utils/filesystem) - copying, renaming, …
|
✅ [Finder](https://doc.nette.org/utils/finder) - finds files and directories<br>
|
||||||
- [Finder](https://doc.nette.org/utils/finder) - finds files and directories
|
✅ [Floats](https://doc.nette.org/utils/floats) - floating point numbers<br>
|
||||||
- [Helper Functions](https://doc.nette.org/utils/helpers)
|
✅ [Helper Functions](https://doc.nette.org/utils/helpers)<br>
|
||||||
- [HTML elements](https://doc.nette.org/utils/html-elements) - generate HTML
|
✅ [HTML elements](https://doc.nette.org/utils/html-elements) - generate HTML<br>
|
||||||
- [Images](https://doc.nette.org/utils/images) - crop, resize, rotate images
|
✅ [Images](https://doc.nette.org/utils/images) - crop, resize, rotate images<br>
|
||||||
- [JSON](https://doc.nette.org/utils/json) - encoding and decoding
|
✅ [Iterables](https://doc.nette.org/utils/iterables) <br>
|
||||||
- [Generating Random Strings](https://doc.nette.org/utils/random)
|
✅ [JSON](https://doc.nette.org/utils/json) - encoding and decoding<br>
|
||||||
- [Paginator](https://doc.nette.org/utils/paginator) - pagination math
|
✅ [Generating Random Strings](https://doc.nette.org/utils/random)<br>
|
||||||
- [PHP Reflection](https://doc.nette.org/utils/reflection)
|
✅ [Paginator](https://doc.nette.org/utils/paginator) - pagination math<br>
|
||||||
- [Strings](https://doc.nette.org/utils/strings) - useful text functions
|
✅ [PHP Reflection](https://doc.nette.org/utils/reflection)<br>
|
||||||
- [SmartObject](https://doc.nette.org/utils/smartobject) - PHP object enhancements
|
✅ [Strings](https://doc.nette.org/utils/strings) - useful text functions<br>
|
||||||
- [Validation](https://doc.nette.org/utils/validators) - validate inputs
|
✅ [SmartObject](https://doc.nette.org/utils/smartobject) - PHP object enhancements<br>
|
||||||
- [Type](https://doc.nette.org/utils/type) - PHP data type
|
✅ [Type](https://doc.nette.org/utils/type) - PHP data type<br>
|
||||||
|
✅ [Validation](https://doc.nette.org/utils/validators) - validate inputs<br>
|
||||||
|
|
||||||
|
<!---->
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
@@ -40,11 +41,9 @@ The recommended way to install is via Composer:
|
|||||||
composer require nette/utils
|
composer require nette/utils
|
||||||
```
|
```
|
||||||
|
|
||||||
- Nette Utils 4.0 is compatible with PHP 8.0 to 8.2
|
Nette Utils 4.1 is compatible with PHP 8.2 to 8.5.
|
||||||
- Nette Utils 3.2 is compatible with PHP 7.2 to 8.2
|
|
||||||
- Nette Utils 3.1 is compatible with PHP 7.1 to 8.0
|
<!---->
|
||||||
- Nette Utils 3.0 is compatible with PHP 7.1 to 8.0
|
|
||||||
- Nette Utils 2.5 is compatible with PHP 5.6 to 8.0
|
|
||||||
|
|
||||||
[Support Me](https://github.com/sponsors/dg)
|
[Support Me](https://github.com/sponsors/dg)
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
|||||||
+5
-4
@@ -1,19 +1,20 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette;
|
namespace Nette;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents object convertible to HTML string.
|
||||||
|
*/
|
||||||
interface HtmlStringable
|
interface HtmlStringable
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns string in HTML format
|
* Returns string in HTML format.
|
||||||
*/
|
*/
|
||||||
function __toString(): string;
|
function __toString(): string;
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-46
@@ -1,28 +1,29 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Iterators;
|
namespace Nette\Iterators;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Smarter caching iterator.
|
* Enhanced caching iterator with first/last/counter tracking.
|
||||||
*
|
*
|
||||||
|
* @template TKey
|
||||||
|
* @template TValue
|
||||||
|
* @extends \CachingIterator<TKey, TValue, \Iterator<TKey, TValue>>
|
||||||
* @property-read bool $first
|
* @property-read bool $first
|
||||||
* @property-read bool $last
|
* @property-read bool $last
|
||||||
* @property-read bool $empty
|
* @property-read bool $empty
|
||||||
* @property-read bool $odd
|
* @property-read bool $odd
|
||||||
* @property-read bool $even
|
* @property-read bool $even
|
||||||
* @property-read int $counter
|
* @property-read int $counter
|
||||||
* @property-read mixed $nextKey
|
* @property-read TKey $nextKey
|
||||||
* @property-read mixed $nextValue
|
* @property-read TValue $nextValue
|
||||||
*/
|
*/
|
||||||
class CachingIterator extends \CachingIterator implements \Countable
|
class CachingIterator extends \CachingIterator implements \Countable
|
||||||
{
|
{
|
||||||
@@ -31,26 +32,13 @@ class CachingIterator extends \CachingIterator implements \Countable
|
|||||||
private int $counter = 0;
|
private int $counter = 0;
|
||||||
|
|
||||||
|
|
||||||
public function __construct($iterator)
|
/** @param iterable<TKey, TValue>|\stdClass $iterable */
|
||||||
|
public function __construct(iterable|\stdClass $iterable)
|
||||||
{
|
{
|
||||||
if (is_array($iterator) || $iterator instanceof \stdClass) {
|
$iterable = $iterable instanceof \stdClass
|
||||||
$iterator = new \ArrayIterator($iterator);
|
? new \ArrayIterator((array) $iterable)
|
||||||
|
: Nette\Utils\Iterables::toIterator($iterable);
|
||||||
} elseif ($iterator instanceof \IteratorAggregate) {
|
parent::__construct($iterable, 0);
|
||||||
do {
|
|
||||||
$iterator = $iterator->getIterator();
|
|
||||||
} while ($iterator instanceof \IteratorAggregate);
|
|
||||||
|
|
||||||
assert($iterator instanceof \Iterator);
|
|
||||||
|
|
||||||
} elseif ($iterator instanceof \Iterator) {
|
|
||||||
} elseif ($iterator instanceof \Traversable) {
|
|
||||||
$iterator = new \IteratorIterator($iterator);
|
|
||||||
} else {
|
|
||||||
throw new Nette\InvalidArgumentException(sprintf('Invalid argument passed to %s; array or Traversable expected, %s given.', self::class, is_object($iterator) ? $iterator::class : gettype($iterator)));
|
|
||||||
}
|
|
||||||
|
|
||||||
parent::__construct($iterator, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -72,45 +60,30 @@ class CachingIterator extends \CachingIterator implements \Countable
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the iterator empty?
|
|
||||||
*/
|
|
||||||
public function isEmpty(): bool
|
public function isEmpty(): bool
|
||||||
{
|
{
|
||||||
return $this->counter === 0;
|
return $this->counter === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the counter odd?
|
|
||||||
*/
|
|
||||||
public function isOdd(): bool
|
public function isOdd(): bool
|
||||||
{
|
{
|
||||||
return $this->counter % 2 === 1;
|
return $this->counter % 2 === 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the counter even?
|
|
||||||
*/
|
|
||||||
public function isEven(): bool
|
public function isEven(): bool
|
||||||
{
|
{
|
||||||
return $this->counter % 2 === 0;
|
return $this->counter % 2 === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the counter.
|
|
||||||
*/
|
|
||||||
public function getCounter(): int
|
public function getCounter(): int
|
||||||
{
|
{
|
||||||
return $this->counter;
|
return $this->counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the count of elements.
|
|
||||||
*/
|
|
||||||
public function count(): int
|
public function count(): int
|
||||||
{
|
{
|
||||||
$inner = $this->getInnerIterator();
|
$inner = $this->getInnerIterator();
|
||||||
@@ -145,18 +118,14 @@ class CachingIterator extends \CachingIterator implements \Countable
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @return TKey */
|
||||||
* Returns the next key.
|
|
||||||
*/
|
|
||||||
public function getNextKey(): mixed
|
public function getNextKey(): mixed
|
||||||
{
|
{
|
||||||
return $this->getInnerIterator()->key();
|
return $this->getInnerIterator()->key();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** @return TValue */
|
||||||
* Returns the next element.
|
|
||||||
*/
|
|
||||||
public function getNextValue(): mixed
|
public function getNextValue(): mixed
|
||||||
{
|
{
|
||||||
return $this->getInnerIterator()->current();
|
return $this->getInnerIterator()->current();
|
||||||
|
|||||||
+4
-8
@@ -1,29 +1,25 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Iterators;
|
namespace Nette\Iterators;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applies the callback to the elements of the inner iterator.
|
* @deprecated use Nette\Utils\Iterables::map()
|
||||||
*/
|
*/
|
||||||
class Mapper extends \IteratorIterator
|
class Mapper extends \IteratorIterator
|
||||||
{
|
{
|
||||||
/** @var callable */
|
private \Closure $callback;
|
||||||
private $callback;
|
|
||||||
|
|
||||||
|
|
||||||
public function __construct(\Traversable $iterator, callable $callback)
|
public function __construct(\Traversable $iterator, callable $callback)
|
||||||
{
|
{
|
||||||
parent::__construct($iterator);
|
parent::__construct($iterator);
|
||||||
$this->callback = $callback;
|
$this->callback = $callback(...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette;
|
namespace Nette;
|
||||||
|
|
||||||
use Nette\Utils\ObjectHelpers;
|
use Nette\Utils\ObjectHelpers;
|
||||||
@@ -22,6 +20,7 @@ use Nette\Utils\ObjectHelpers;
|
|||||||
trait SmartObject
|
trait SmartObject
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* @param mixed[] $args
|
||||||
* @return mixed
|
* @return mixed
|
||||||
* @throws MemberAccessException
|
* @throws MemberAccessException
|
||||||
*/
|
*/
|
||||||
@@ -36,7 +35,7 @@ trait SmartObject
|
|||||||
$handler(...$args);
|
$handler(...$args);
|
||||||
}
|
}
|
||||||
} elseif ($handlers !== null) {
|
} elseif ($handlers !== null) {
|
||||||
throw new UnexpectedValueException("Property $class::$$name must be iterable or null, " . gettype($handlers) . ' given.');
|
throw new UnexpectedValueException("Property $class::$$name must be iterable or null, " . get_debug_type($handlers) . ' given.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -47,6 +46,8 @@ trait SmartObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param mixed[] $args
|
||||||
|
* @return never
|
||||||
* @throws MemberAccessException
|
* @throws MemberAccessException
|
||||||
*/
|
*/
|
||||||
public static function __callStatic(string $name, array $args)
|
public static function __callStatic(string $name, array $args)
|
||||||
|
|||||||
+4
-18
@@ -1,36 +1,22 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette;
|
namespace Nette;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static class.
|
* Prevents instantiation.
|
||||||
*/
|
*/
|
||||||
trait StaticClass
|
trait StaticClass
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @return never
|
* Class is static and cannot be instantiated.
|
||||||
* @throws \Error
|
|
||||||
*/
|
*/
|
||||||
final public function __construct()
|
private function __construct()
|
||||||
{
|
{
|
||||||
throw new \Error('Class ' . static::class . ' is static and cannot be instantiated.');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call to undefined static method.
|
|
||||||
* @throws MemberAccessException
|
|
||||||
*/
|
|
||||||
public static function __callStatic(string $name, array $args): mixed
|
|
||||||
{
|
|
||||||
Utils\ObjectHelpers::strictStaticCall(static::class, $name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-4
@@ -1,17 +1,15 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Localization;
|
namespace Nette\Localization;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Translator adapter.
|
* Translation provider.
|
||||||
*/
|
*/
|
||||||
interface Translator
|
interface Translator
|
||||||
{
|
{
|
||||||
|
|||||||
+16
-20
@@ -1,20 +1,21 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function count, is_array, is_scalar, sprintf;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides objects to work as array.
|
* Array-like object with property access.
|
||||||
* @template T
|
* @template T
|
||||||
|
* @implements \IteratorAggregate<array-key, T>
|
||||||
|
* @implements \ArrayAccess<array-key, T>
|
||||||
*/
|
*/
|
||||||
class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \IteratorAggregate
|
class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \IteratorAggregate
|
||||||
{
|
{
|
||||||
@@ -27,7 +28,7 @@ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \Iterator
|
|||||||
$obj = new static;
|
$obj = new static;
|
||||||
foreach ($array as $key => $value) {
|
foreach ($array as $key => $value) {
|
||||||
$obj->$key = $recursive && is_array($value)
|
$obj->$key = $recursive && is_array($value)
|
||||||
? static::from($value, true)
|
? static::from($value)
|
||||||
: $value;
|
: $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,8 +37,7 @@ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \Iterator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an iterator over all items.
|
* @return \Iterator<array-key, T>
|
||||||
* @return \Iterator<int|string, T>
|
|
||||||
*/
|
*/
|
||||||
public function &getIterator(): \Iterator
|
public function &getIterator(): \Iterator
|
||||||
{
|
{
|
||||||
@@ -47,9 +47,6 @@ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \Iterator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns items count.
|
|
||||||
*/
|
|
||||||
public function count(): int
|
public function count(): int
|
||||||
{
|
{
|
||||||
return count((array) $this);
|
return count((array) $this);
|
||||||
@@ -57,14 +54,14 @@ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \Iterator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces or appends a item.
|
* Replaces or appends an item.
|
||||||
* @param string|int $key
|
* @param array-key $key
|
||||||
* @param T $value
|
* @param T $value
|
||||||
*/
|
*/
|
||||||
public function offsetSet($key, $value): void
|
public function offsetSet($key, $value): void
|
||||||
{
|
{
|
||||||
if (!is_scalar($key)) { // prevents null
|
if (!is_scalar($key)) { // prevents null
|
||||||
throw new Nette\InvalidArgumentException(sprintf('Key must be either a string or an integer, %s given.', gettype($key)));
|
throw new Nette\InvalidArgumentException(sprintf('Key must be either a string or an integer, %s given.', get_debug_type($key)));
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->$key = $value;
|
$this->$key = $value;
|
||||||
@@ -72,20 +69,19 @@ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \Iterator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a item.
|
* Returns an item.
|
||||||
* @param string|int $key
|
* @param array-key $key
|
||||||
* @return T
|
* @return T
|
||||||
*/
|
*/
|
||||||
#[\ReturnTypeWillChange]
|
public function offsetGet($key): mixed
|
||||||
public function offsetGet($key)
|
|
||||||
{
|
{
|
||||||
return $this->$key;
|
return $this->$key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether a item exists.
|
* Determines whether an item exists.
|
||||||
* @param string|int $key
|
* @param array-key $key
|
||||||
*/
|
*/
|
||||||
public function offsetExists($key): bool
|
public function offsetExists($key): bool
|
||||||
{
|
{
|
||||||
@@ -95,7 +91,7 @@ class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \Iterator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the element from this list.
|
* Removes the element from this list.
|
||||||
* @param string|int $key
|
* @param array-key $key
|
||||||
*/
|
*/
|
||||||
public function offsetUnset($key): void
|
public function offsetUnset($key): void
|
||||||
{
|
{
|
||||||
|
|||||||
+15
-19
@@ -1,31 +1,31 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function array_splice, array_unshift, count, is_int;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the base class for a generic list (items can be accessed by index).
|
* Generic list with integer indices.
|
||||||
* @template T
|
* @template T
|
||||||
|
* @implements \IteratorAggregate<int, T>
|
||||||
|
* @implements \ArrayAccess<int, T>
|
||||||
*/
|
*/
|
||||||
class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
/** @var list<T> */
|
||||||
|
|
||||||
private array $list = [];
|
private array $list = [];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms array to ArrayList.
|
* Transforms array to ArrayList.
|
||||||
* @param array<T> $array
|
* @param list<T> $array
|
||||||
*/
|
*/
|
||||||
public static function from(array $array): static
|
public static function from(array $array): static
|
||||||
{
|
{
|
||||||
@@ -40,7 +40,6 @@ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an iterator over all items.
|
|
||||||
* @return \Iterator<int, T>
|
* @return \Iterator<int, T>
|
||||||
*/
|
*/
|
||||||
public function &getIterator(): \Iterator
|
public function &getIterator(): \Iterator
|
||||||
@@ -51,9 +50,6 @@ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns items count.
|
|
||||||
*/
|
|
||||||
public function count(): int
|
public function count(): int
|
||||||
{
|
{
|
||||||
return count($this->list);
|
return count($this->list);
|
||||||
@@ -61,8 +57,8 @@ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces or appends a item.
|
* Replaces or appends an item.
|
||||||
* @param int|null $index
|
* @param ?int $index
|
||||||
* @param T $value
|
* @param T $value
|
||||||
* @throws Nette\OutOfRangeException
|
* @throws Nette\OutOfRangeException
|
||||||
*/
|
*/
|
||||||
@@ -81,7 +77,7 @@ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a item.
|
* Returns an item.
|
||||||
* @param int $index
|
* @param int $index
|
||||||
* @return T
|
* @return T
|
||||||
* @throws Nette\OutOfRangeException
|
* @throws Nette\OutOfRangeException
|
||||||
@@ -97,7 +93,7 @@ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether a item exists.
|
* Determines whether an item exists.
|
||||||
* @param int $index
|
* @param int $index
|
||||||
*/
|
*/
|
||||||
public function offsetExists($index): bool
|
public function offsetExists($index): bool
|
||||||
@@ -122,13 +118,13 @@ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepends a item.
|
* Prepends an item.
|
||||||
* @param T $value
|
* @param T $value
|
||||||
*/
|
*/
|
||||||
public function prepend(mixed $value): void
|
public function prepend(mixed $value): void
|
||||||
{
|
{
|
||||||
$first = array_slice($this->list, 0, 1);
|
// route the value through offsetSet() first so a validation added in a subclass isn't bypassed
|
||||||
$this->offsetSet(0, $value);
|
$this->offsetSet(null, $value);
|
||||||
array_splice($this->list, 1, 0, $first);
|
array_unshift($this->list, ...array_splice($this->list, -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+191
-68
@@ -1,21 +1,20 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use JetBrains\PhpStorm\Language;
|
use JetBrains\PhpStorm\Language;
|
||||||
use Nette;
|
use Nette;
|
||||||
use function is_array, is_int, is_object, count;
|
use function array_combine, array_intersect_key, array_is_list, array_key_exists, array_key_first, array_key_last, array_keys, array_reverse, array_search, array_slice, array_walk_recursive, count, func_num_args, in_array, is_array, is_int, is_object, key, preg_split;
|
||||||
|
use const PREG_GREP_INVERT, PREG_SPLIT_DELIM_CAPTURE, PREG_SPLIT_NO_EMPTY;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array tools library.
|
* Array manipulation utilities.
|
||||||
*/
|
*/
|
||||||
class Arrays
|
class Arrays
|
||||||
{
|
{
|
||||||
@@ -71,14 +70,14 @@ class Arrays
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recursively merges two fields. It is useful, for example, for merging tree structures. It behaves as
|
* Recursively merges two arrays. Useful for merging tree structures. Behaves like the + operator:
|
||||||
* the + operator for array, ie. it adds a key/value pair from the second array to the first one and retains
|
* key/value pairs from the second array are added to the first, with the first array's values taking
|
||||||
* the value from the first array in the case of a key collision.
|
* precedence on key collisions. Nested arrays are merged recursively instead of replaced.
|
||||||
* @template T1
|
* @template T1
|
||||||
* @template T2
|
* @template T2
|
||||||
* @param array<T1> $array1
|
* @param array<T1> $array1
|
||||||
* @param array<T2> $array2
|
* @param array<T2> $array2
|
||||||
* @return array<T1|T2>
|
* @return array<T1|T2|array<mixed>>
|
||||||
*/
|
*/
|
||||||
public static function mergeTree(array $array1, array $array2): array
|
public static function mergeTree(array $array1, array $array2): array
|
||||||
{
|
{
|
||||||
@@ -95,17 +94,19 @@ class Arrays
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns zero-indexed position of given array key. Returns null if key is not found.
|
* Returns zero-indexed position of given array key. Returns null if key is not found.
|
||||||
|
* @param array<mixed> $array
|
||||||
*/
|
*/
|
||||||
public static function getKeyOffset(array $array, string|int $key): ?int
|
public static function getKeyOffset(array $array, string|int $key): ?int
|
||||||
{
|
{
|
||||||
return Helpers::falseToNull(array_search(self::toKey($key), array_keys($array), true));
|
return Helpers::falseToNull(array_search(self::toKey($key), array_keys($array), strict: true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param array<mixed> $array
|
||||||
* @deprecated use getKeyOffset()
|
* @deprecated use getKeyOffset()
|
||||||
*/
|
*/
|
||||||
public static function searchKey(array $array, $key): ?int
|
public static function searchKey(array $array, string|int $key): ?int
|
||||||
{
|
{
|
||||||
return self::getKeyOffset($array, $key);
|
return self::getKeyOffset($array, $key);
|
||||||
}
|
}
|
||||||
@@ -113,53 +114,110 @@ class Arrays
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests an array for the presence of value.
|
* Tests an array for the presence of value.
|
||||||
|
* @param array<mixed> $array
|
||||||
*/
|
*/
|
||||||
public static function contains(array $array, mixed $value): bool
|
public static function contains(array $array, mixed $value): bool
|
||||||
{
|
{
|
||||||
return in_array($value, $array, true);
|
return in_array($value, $array, strict: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the first item from the array or null if array is empty.
|
* Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null.
|
||||||
* @template T
|
* @template K of int|string
|
||||||
* @param array<T> $array
|
* @template V
|
||||||
* @return ?T
|
* @template E
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param ?callable(V, K, array<K, V>): bool $predicate
|
||||||
|
* @param ?callable(): E $else
|
||||||
|
* @return ($else is null ? ?V : V|E)
|
||||||
*/
|
*/
|
||||||
public static function first(array $array): mixed
|
public static function first(array $array, ?callable $predicate = null, ?callable $else = null): mixed
|
||||||
{
|
{
|
||||||
return count($array) ? reset($array) : null;
|
$key = self::firstKey($array, $predicate);
|
||||||
|
return $key === null
|
||||||
|
? ($else ? $else() : null)
|
||||||
|
: $array[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the last item from the array or null if array is empty.
|
* Returns the last item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null.
|
||||||
* @template T
|
* @template K of int|string
|
||||||
* @param array<T> $array
|
* @template V
|
||||||
* @return ?T
|
* @template E
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param ?callable(V, K, array<K, V>): bool $predicate
|
||||||
|
* @param ?callable(): E $else
|
||||||
|
* @return ($else is null ? ?V : V|E)
|
||||||
*/
|
*/
|
||||||
public static function last(array $array): mixed
|
public static function last(array $array, ?callable $predicate = null, ?callable $else = null): mixed
|
||||||
{
|
{
|
||||||
return count($array) ? end($array) : null;
|
$key = self::lastKey($array, $predicate);
|
||||||
|
return $key === null
|
||||||
|
? ($else ? $else() : null)
|
||||||
|
: $array[$key];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the key of first item (matching the specified predicate if given) or null if there is no such item.
|
||||||
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param ?callable(V, K, array<K, V>): bool $predicate
|
||||||
|
* @return ?K
|
||||||
|
*/
|
||||||
|
public static function firstKey(array $array, ?callable $predicate = null): int|string|null
|
||||||
|
{
|
||||||
|
if (!$predicate) {
|
||||||
|
return array_key_first($array);
|
||||||
|
}
|
||||||
|
foreach ($array as $k => $v) {
|
||||||
|
if ($predicate($v, $k, $array)) {
|
||||||
|
return $k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the key of last item (matching the specified predicate if given) or null if there is no such item.
|
||||||
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param ?callable(V, K, array<K, V>): bool $predicate
|
||||||
|
* @return ?K
|
||||||
|
*/
|
||||||
|
public static function lastKey(array $array, ?callable $predicate = null): int|string|null
|
||||||
|
{
|
||||||
|
return $predicate
|
||||||
|
? self::firstKey(array_reverse($array, preserve_keys: true), $predicate)
|
||||||
|
: array_key_last($array);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts the contents of the $inserted array into the $array immediately before the $key.
|
||||||
|
* If $key is null (or does not exist), it is inserted at the beginning.
|
||||||
|
* @param array<mixed> $array
|
||||||
|
* @param array<mixed> $inserted
|
||||||
|
*/
|
||||||
|
public static function insertBefore(array &$array, string|int|null $key, array $inserted): void
|
||||||
|
{
|
||||||
|
$offset = $key === null ? 0 : (int) self::getKeyOffset($array, $key);
|
||||||
|
$array = array_slice($array, 0, $offset, preserve_keys: true)
|
||||||
|
+ $inserted
|
||||||
|
+ array_slice($array, $offset, count($array), preserve_keys: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts the contents of the $inserted array into the $array immediately after the $key.
|
* Inserts the contents of the $inserted array into the $array immediately after the $key.
|
||||||
* If $key is null (or does not exist), it is inserted at the beginning.
|
|
||||||
*/
|
|
||||||
public static function insertBefore(array &$array, string|int|null $key, array $inserted): void
|
|
||||||
{
|
|
||||||
$offset = $key === null ? 0 : (int) self::getKeyOffset($array, $key);
|
|
||||||
$array = array_slice($array, 0, $offset, true)
|
|
||||||
+ $inserted
|
|
||||||
+ array_slice($array, $offset, count($array), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Inserts the contents of the $inserted array into the $array before the $key.
|
|
||||||
* If $key is null (or does not exist), it is inserted at the end.
|
* If $key is null (or does not exist), it is inserted at the end.
|
||||||
|
* @param array<mixed> $array
|
||||||
|
* @param array<mixed> $inserted
|
||||||
*/
|
*/
|
||||||
public static function insertAfter(array &$array, string|int|null $key, array $inserted): void
|
public static function insertAfter(array &$array, string|int|null $key, array $inserted): void
|
||||||
{
|
{
|
||||||
@@ -167,14 +225,15 @@ class Arrays
|
|||||||
$offset = count($array) - 1;
|
$offset = count($array) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$array = array_slice($array, 0, $offset + 1, true)
|
$array = array_slice($array, 0, $offset + 1, preserve_keys: true)
|
||||||
+ $inserted
|
+ $inserted
|
||||||
+ array_slice($array, $offset + 1, count($array), true);
|
+ array_slice($array, $offset + 1, count($array), preserve_keys: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renames key in array.
|
* Renames key in array.
|
||||||
|
* @param array<mixed> $array
|
||||||
*/
|
*/
|
||||||
public static function renameKey(array &$array, string|int $oldKey, string|int $newKey): bool
|
public static function renameKey(array &$array, string|int $oldKey, string|int $newKey): bool
|
||||||
{
|
{
|
||||||
@@ -211,6 +270,8 @@ class Arrays
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Transforms multidimensional array to flat array.
|
* Transforms multidimensional array to flat array.
|
||||||
|
* @param array<mixed> $array
|
||||||
|
* @return array<mixed>
|
||||||
*/
|
*/
|
||||||
public static function flatten(array $array, bool $preserveKeys = false): array
|
public static function flatten(array $array, bool $preserveKeys = false): array
|
||||||
{
|
{
|
||||||
@@ -225,28 +286,28 @@ class Arrays
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the array is indexed in ascending order of numeric keys from zero, a.k.a list.
|
* Checks if the array is indexed in ascending order of numeric keys from zero, a.k.a list.
|
||||||
|
* @return ($value is list ? true : false)
|
||||||
*/
|
*/
|
||||||
public static function isList(mixed $value): bool
|
public static function isList(mixed $value): bool
|
||||||
{
|
{
|
||||||
return is_array($value) && (PHP_VERSION_ID < 80100
|
return is_array($value) && array_is_list($value);
|
||||||
? !$value || array_keys($value) === range(0, count($value) - 1)
|
|
||||||
: array_is_list($value)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reformats table to associative tree. Path looks like 'field|field[]field->field=field'.
|
* Transforms a flat array of rows into an associative tree using a path expression like 'field|field[]field->field=field'.
|
||||||
* @param string|string[] $path
|
* @param array<mixed> $array
|
||||||
|
* @param string|list<string> $path
|
||||||
|
* @return array<mixed>|\stdClass
|
||||||
*/
|
*/
|
||||||
public static function associate(array $array, $path): array|\stdClass
|
public static function associate(array $array, string|array $path): array|\stdClass
|
||||||
{
|
{
|
||||||
$parts = is_array($path)
|
$parts = is_array($path)
|
||||||
? $path
|
? $path
|
||||||
: preg_split('#(\[\]|->|=|\|)#', $path, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
: preg_split('#(\[]|->|=|\|)#', $path, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
||||||
|
|
||||||
if (!$parts || $parts === ['->'] || $parts[0] === '=' || $parts[0] === '|') {
|
if (!$parts || $parts === ['->'] || $parts[0] === '=' || $parts[0] === '|') {
|
||||||
throw new Nette\InvalidArgumentException("Invalid path '$path'.");
|
throw new Nette\InvalidArgumentException("Invalid path '" . (is_array($path) ? implode('', $path) : $path) . "'.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = $parts[0] === '->' ? new \stdClass : [];
|
$res = $parts[0] === '->' ? new \stdClass : [];
|
||||||
@@ -265,6 +326,8 @@ class Arrays
|
|||||||
$x = $row[$parts[$i]];
|
$x = $row[$parts[$i]];
|
||||||
$row = null;
|
$row = null;
|
||||||
}
|
}
|
||||||
|
break; // '=' is always the final operation
|
||||||
|
|
||||||
} elseif ($part === '->') {
|
} elseif ($part === '->') {
|
||||||
if (isset($parts[++$i])) {
|
if (isset($parts[++$i])) {
|
||||||
if ($x === null) {
|
if ($x === null) {
|
||||||
@@ -290,7 +353,9 @@ class Arrays
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalizes array to associative array. Replace numeric keys with their values, the new value will be $filling.
|
* Converts array to associative: items with numeric keys are converted to keys, with $filling as their value.
|
||||||
|
* @param array<mixed> $array
|
||||||
|
* @return array<string, mixed>
|
||||||
*/
|
*/
|
||||||
public static function normalize(array $array, mixed $filling = null): array
|
public static function normalize(array $array, mixed $filling = null): array
|
||||||
{
|
{
|
||||||
@@ -329,13 +394,16 @@ class Arrays
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests whether at least one element in the array passes the test implemented by the
|
* Tests whether at least one element in the array passes the test implemented by the provided function.
|
||||||
* provided callback with signature `function ($value, $key, array $array): bool`.
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param callable(V, K, array<K, V>): bool $predicate
|
||||||
*/
|
*/
|
||||||
public static function some(iterable $array, callable $callback): bool
|
public static function some(iterable $array, callable $predicate): bool
|
||||||
{
|
{
|
||||||
foreach ($array as $k => $v) {
|
foreach ($array as $k => $v) {
|
||||||
if ($callback($v, $k, $array)) {
|
if ($predicate($v, $k, $array)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -345,13 +413,16 @@ class Arrays
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests whether all elements in the array pass the test implemented by the provided function,
|
* Tests whether all elements in the array pass the test implemented by the provided function.
|
||||||
* which has the signature `function ($value, $key, array $array): bool`.
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param callable(V, K, array<K, V>): bool $predicate
|
||||||
*/
|
*/
|
||||||
public static function every(iterable $array, callable $callback): bool
|
public static function every(iterable $array, callable $predicate): bool
|
||||||
{
|
{
|
||||||
foreach ($array as $k => $v) {
|
foreach ($array as $k => $v) {
|
||||||
if (!$callback($v, $k, $array)) {
|
if (!$predicate($v, $k, $array)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -361,14 +432,64 @@ class Arrays
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls $callback on all elements in the array and returns the array of return values.
|
* Returns a new array containing all key-value pairs matching the given $predicate.
|
||||||
* The callback has the signature `function ($value, $key, array $array): bool`.
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param callable(V, K, array<K, V>): bool $predicate
|
||||||
|
* @return array<K, V>
|
||||||
*/
|
*/
|
||||||
public static function map(iterable $array, callable $callback): array
|
public static function filter(array $array, callable $predicate): array
|
||||||
{
|
{
|
||||||
$res = [];
|
$res = [];
|
||||||
foreach ($array as $k => $v) {
|
foreach ($array as $k => $v) {
|
||||||
$res[$k] = $callback($v, $k, $array);
|
if ($predicate($v, $k, $array)) {
|
||||||
|
$res[$k] = $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array containing the original keys and results of applying the given transform function to each element.
|
||||||
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @template R
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param callable(V, K, array<K, V>): R $transformer
|
||||||
|
* @return array<K, R>
|
||||||
|
*/
|
||||||
|
public static function map(iterable $array, callable $transformer): array
|
||||||
|
{
|
||||||
|
$res = [];
|
||||||
|
foreach ($array as $k => $v) {
|
||||||
|
$res[$k] = $transformer($v, $k, $array);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array containing new keys and values generated by applying the given transform function to each element.
|
||||||
|
* If the function returns null, the element is skipped.
|
||||||
|
* @template K of int|string
|
||||||
|
* @template V
|
||||||
|
* @template ResK of int|string
|
||||||
|
* @template ResV
|
||||||
|
* @param array<K, V> $array
|
||||||
|
* @param callable(V, K, array<K, V>): ?array{ResK, ResV} $transformer
|
||||||
|
* @return array<ResK, ResV>
|
||||||
|
*/
|
||||||
|
public static function mapWithKeys(array $array, callable $transformer): array
|
||||||
|
{
|
||||||
|
$res = [];
|
||||||
|
foreach ($array as $k => $v) {
|
||||||
|
$pair = $transformer($v, $k, $array);
|
||||||
|
if ($pair) {
|
||||||
|
$res[$pair[0]] = $pair[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
@@ -377,9 +498,10 @@ class Arrays
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Invokes all callbacks and returns array of results.
|
* Invokes all callbacks and returns array of results.
|
||||||
* @param callable[] $callbacks
|
* @param iterable<callable> $callbacks
|
||||||
|
* @return array<mixed>
|
||||||
*/
|
*/
|
||||||
public static function invoke(iterable $callbacks, ...$args): array
|
public static function invoke(iterable $callbacks, mixed ...$args): array
|
||||||
{
|
{
|
||||||
$res = [];
|
$res = [];
|
||||||
foreach ($callbacks as $k => $cb) {
|
foreach ($callbacks as $k => $cb) {
|
||||||
@@ -392,9 +514,10 @@ class Arrays
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Invokes method on every object in an array and returns array of results.
|
* Invokes method on every object in an array and returns array of results.
|
||||||
* @param object[] $objects
|
* @param iterable<object> $objects
|
||||||
|
* @return array<mixed>
|
||||||
*/
|
*/
|
||||||
public static function invokeMethod(iterable $objects, string $method, ...$args): array
|
public static function invokeMethod(iterable $objects, string $method, mixed ...$args): array
|
||||||
{
|
{
|
||||||
$res = [];
|
$res = [];
|
||||||
foreach ($objects as $k => $obj) {
|
foreach ($objects as $k => $obj) {
|
||||||
@@ -408,6 +531,7 @@ class Arrays
|
|||||||
/**
|
/**
|
||||||
* Copies the elements of the $array array to the $object object and then returns it.
|
* Copies the elements of the $array array to the $object object and then returns it.
|
||||||
* @template T of object
|
* @template T of object
|
||||||
|
* @param iterable<mixed> $array
|
||||||
* @param T $object
|
* @param T $object
|
||||||
* @return T
|
* @return T
|
||||||
*/
|
*/
|
||||||
@@ -426,13 +550,12 @@ class Arrays
|
|||||||
*/
|
*/
|
||||||
public static function toKey(mixed $value): int|string
|
public static function toKey(mixed $value): int|string
|
||||||
{
|
{
|
||||||
return key([$value => null]);
|
return key(@[$value => null]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns copy of the $array where every item is converted to string
|
* Returns a copy of $array where every item is cast to string and wrapped with $prefix and $suffix.
|
||||||
* and prefixed by $prefix and suffixed by $suffix.
|
|
||||||
* @param string[] $array
|
* @param string[] $array
|
||||||
* @return string[]
|
* @return string[]
|
||||||
*/
|
*/
|
||||||
|
|||||||
+23
-19
@@ -1,16 +1,14 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use function is_array, is_object, is_string;
|
use function explode, func_get_args, ini_get, is_array, is_callable, is_object, is_string, preg_replace, restore_error_handler, set_error_handler, sprintf, str_contains, str_ends_with;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,21 +20,24 @@ final class Callback
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Invokes internal PHP function with own error handler.
|
* Invokes internal PHP function with own error handler.
|
||||||
|
* @param callable-string $function
|
||||||
|
* @param list<mixed> $args
|
||||||
|
* @param callable(string, int): (bool|void|null) $onError
|
||||||
*/
|
*/
|
||||||
public static function invokeSafe(string $function, array $args, callable $onError): mixed
|
public static function invokeSafe(string $function, array $args, callable $onError): mixed
|
||||||
{
|
{
|
||||||
$prev = set_error_handler(function ($severity, $message, $file) use ($onError, &$prev, $function): ?bool {
|
$prev = set_error_handler(function (int $severity, string $message, string $file, int $line) use ($onError, &$prev, $function): bool {
|
||||||
if ($file === __FILE__) {
|
if ($file === __FILE__) {
|
||||||
$msg = ini_get('html_errors')
|
$msg = ini_get('html_errors')
|
||||||
? Html::htmlToText($message)
|
? Html::htmlToText($message)
|
||||||
: $message;
|
: $message;
|
||||||
$msg = preg_replace("#^$function\\(.*?\\): #", '', $msg);
|
$msg = (string) preg_replace("#^$function\\(.*?\\): #", '', $msg);
|
||||||
if ($onError($msg, $severity) !== false) {
|
if ($onError($msg, $severity) !== false) {
|
||||||
return null;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $prev ? $prev(...func_get_args()) : false;
|
return $prev ? $prev(...func_get_args()) !== false : false;
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -48,12 +49,12 @@ final class Callback
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that $callable is valid PHP callback. Otherwise throws exception. If the $syntax is set to true, only verifies
|
* Checks that $callable is a valid PHP callback and returns it. With $syntax set to true, only verifies
|
||||||
* that $callable has a valid structure to be used as a callback, but does not verify if the class or method actually exists.
|
* the structural validity without checking whether the class or method actually exists.
|
||||||
* @return callable
|
* @return callable
|
||||||
* @throws Nette\InvalidArgumentException
|
* @throws Nette\InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public static function check(mixed $callable, bool $syntax = false)
|
public static function check(mixed $callable, bool $syntax = false): mixed
|
||||||
{
|
{
|
||||||
if (!is_callable($callable, $syntax)) {
|
if (!is_callable($callable, $syntax)) {
|
||||||
throw new Nette\InvalidArgumentException(
|
throw new Nette\InvalidArgumentException(
|
||||||
@@ -87,19 +88,20 @@ final class Callback
|
|||||||
* @param callable $callable type check is escalated to ReflectionException
|
* @param callable $callable type check is escalated to ReflectionException
|
||||||
* @throws \ReflectionException if callback is not valid
|
* @throws \ReflectionException if callback is not valid
|
||||||
*/
|
*/
|
||||||
public static function toReflection($callable): \ReflectionMethod|\ReflectionFunction
|
public static function toReflection(mixed $callable): \ReflectionMethod|\ReflectionFunction
|
||||||
{
|
{
|
||||||
if ($callable instanceof \Closure) {
|
if ($callable instanceof \Closure) {
|
||||||
$callable = self::unwrap($callable);
|
$callable = self::unwrap($callable);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_string($callable) && str_contains($callable, '::')) {
|
if (is_string($callable) && str_contains($callable, '::')) {
|
||||||
return new \ReflectionMethod($callable);
|
return new ReflectionMethod(...explode('::', $callable, 2));
|
||||||
} elseif (is_array($callable)) {
|
} elseif (is_array($callable)) {
|
||||||
return new \ReflectionMethod($callable[0], $callable[1]);
|
return new ReflectionMethod($callable[0], $callable[1]);
|
||||||
} elseif (is_object($callable) && !$callable instanceof \Closure) {
|
} elseif (is_object($callable) && !$callable instanceof \Closure) {
|
||||||
return new \ReflectionMethod($callable, '__invoke');
|
return new ReflectionMethod($callable, '__invoke');
|
||||||
} else {
|
} else {
|
||||||
|
assert($callable instanceof \Closure || is_string($callable));
|
||||||
return new \ReflectionFunction($callable);
|
return new \ReflectionFunction($callable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,18 +118,20 @@ final class Callback
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Unwraps closure created by Closure::fromCallable().
|
* Unwraps closure created by Closure::fromCallable().
|
||||||
|
* @return callable|array{object|class-string, string}|string
|
||||||
*/
|
*/
|
||||||
public static function unwrap(\Closure $closure): callable|array
|
public static function unwrap(\Closure $closure): callable|array|string
|
||||||
{
|
{
|
||||||
$r = new \ReflectionFunction($closure);
|
$r = new \ReflectionFunction($closure);
|
||||||
|
$class = $r->getClosureScopeClass()?->name;
|
||||||
if (str_ends_with($r->name, '}')) {
|
if (str_ends_with($r->name, '}')) {
|
||||||
return $closure;
|
return $closure;
|
||||||
|
|
||||||
} elseif ($obj = $r->getClosureThis()) {
|
} elseif (($obj = $r->getClosureThis()) && $obj::class === $class) {
|
||||||
return [$obj, $r->name];
|
return [$obj, $r->name];
|
||||||
|
|
||||||
} elseif ($class = $r->getClosureScopeClass()) {
|
} elseif ($class) {
|
||||||
return [$class->name, $r->name];
|
return [$class, $r->name];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return $r->name;
|
return $r->name;
|
||||||
|
|||||||
+99
-32
@@ -1,24 +1,20 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use function array_merge, checkdate, implode, is_numeric, is_string, preg_replace_callback, sprintf, time, trim;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DateTime.
|
* Extends PHP's DateTime with strict validation and additional factory methods.
|
||||||
*/
|
*/
|
||||||
class DateTime extends \DateTime implements \JsonSerializable
|
class DateTime extends \DateTime implements \JsonSerializable
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
|
||||||
|
|
||||||
/** minute in seconds */
|
/** minute in seconds */
|
||||||
public const MINUTE = 60;
|
public const MINUTE = 60;
|
||||||
|
|
||||||
@@ -45,14 +41,14 @@ class DateTime extends \DateTime implements \JsonSerializable
|
|||||||
public static function from(string|int|\DateTimeInterface|null $time): static
|
public static function from(string|int|\DateTimeInterface|null $time): static
|
||||||
{
|
{
|
||||||
if ($time instanceof \DateTimeInterface) {
|
if ($time instanceof \DateTimeInterface) {
|
||||||
return new static($time->format('Y-m-d H:i:s.u'), $time->getTimezone());
|
return static::createFromInterface($time);
|
||||||
|
|
||||||
} elseif (is_numeric($time)) {
|
} elseif (is_numeric($time)) {
|
||||||
if ($time <= self::YEAR) {
|
if ($time <= self::YEAR) {
|
||||||
$time += time();
|
$time += time();
|
||||||
}
|
}
|
||||||
|
|
||||||
return (new static('@' . $time))->setTimezone(new \DateTimeZone(date_default_timezone_get()));
|
return (new static)->setTimestamp((int) $time);
|
||||||
|
|
||||||
} else { // textual or null
|
} else { // textual or null
|
||||||
return new static((string) $time);
|
return new static((string) $time);
|
||||||
@@ -62,7 +58,7 @@ class DateTime extends \DateTime implements \JsonSerializable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates DateTime object.
|
* Creates DateTime object.
|
||||||
* @throws Nette\InvalidArgumentException if the date and time are not valid.
|
* @throws \Exception if the date and time are not valid.
|
||||||
*/
|
*/
|
||||||
public static function fromParts(
|
public static function fromParts(
|
||||||
int $year,
|
int $year,
|
||||||
@@ -73,44 +69,105 @@ class DateTime extends \DateTime implements \JsonSerializable
|
|||||||
float $second = 0.0,
|
float $second = 0.0,
|
||||||
): static
|
): static
|
||||||
{
|
{
|
||||||
$s = sprintf('%04d-%02d-%02d %02d:%02d:%02.5F', $year, $month, $day, $hour, $minute, $second);
|
$sec = (int) floor($second);
|
||||||
if (
|
return (new static(''))
|
||||||
!checkdate($month, $day, $year)
|
->setDate($year, $month, $day)
|
||||||
|| $hour < 0
|
->setTime($hour, $minute, $sec, (int) round(($second - $sec) * 1e6));
|
||||||
|| $hour > 23
|
|
||||||
|| $minute < 0
|
|
||||||
|| $minute > 59
|
|
||||||
|| $second < 0
|
|
||||||
|| $second >= 60
|
|
||||||
) {
|
|
||||||
throw new Nette\InvalidArgumentException("Invalid date '$s'");
|
|
||||||
}
|
|
||||||
|
|
||||||
return new static($s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns new DateTime object formatted according to the specified format.
|
* Returns a new DateTime object formatted according to the specified format.
|
||||||
*/
|
*/
|
||||||
public static function createFromFormat(
|
public static function createFromFormat(
|
||||||
string $format,
|
string $format,
|
||||||
string $time,
|
string $datetime,
|
||||||
string|\DateTimeZone|null $timezone = null,
|
string|\DateTimeZone|null $timezone = null,
|
||||||
): static|false
|
): static|false
|
||||||
{
|
{
|
||||||
if ($timezone === null) {
|
if (is_string($timezone)) {
|
||||||
$timezone = new \DateTimeZone(date_default_timezone_get());
|
|
||||||
|
|
||||||
} elseif (is_string($timezone)) {
|
|
||||||
$timezone = new \DateTimeZone($timezone);
|
$timezone = new \DateTimeZone($timezone);
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = parent::createFromFormat($format, $time, $timezone);
|
$date = parent::createFromFormat($format, $datetime, $timezone);
|
||||||
return $date ? static::from($date) : false;
|
return $date ? static::from($date) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function __construct(string $datetime = 'now', ?\DateTimeZone $timezone = null)
|
||||||
|
{
|
||||||
|
$this->apply($datetime, $timezone, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function modify(string $modifier): static
|
||||||
|
{
|
||||||
|
$this->apply($modifier);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function setDate(int $year, int $month, int $day): static
|
||||||
|
{
|
||||||
|
if (!checkdate($month, $day, $year)) {
|
||||||
|
throw new \Exception(sprintf('The date %04d-%02d-%02d is not valid.', $year, $month, $day));
|
||||||
|
}
|
||||||
|
return parent::setDate($year, $month, $day);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function setTime(int $hour, int $minute, int $second = 0, int $microsecond = 0): static
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
$hour < 0 || $hour > 23
|
||||||
|
|| $minute < 0 || $minute > 59
|
||||||
|
|| $second < 0 || $second >= 60
|
||||||
|
|| $microsecond < 0 || $microsecond >= 1_000_000
|
||||||
|
) {
|
||||||
|
throw new \Exception(sprintf('The time %02d:%02d:%08.5F is not valid.', $hour, $minute, $second + $microsecond / 1_000_000));
|
||||||
|
}
|
||||||
|
return parent::setTime($hour, $minute, $second, $microsecond);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a relative time string (e.g. '10 minut') to seconds.
|
||||||
|
*/
|
||||||
|
public static function relativeToSeconds(string $relativeTime): int
|
||||||
|
{
|
||||||
|
return (new self('@0 ' . $relativeTime))
|
||||||
|
->getTimestamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function apply(string $datetime, ?\DateTimeZone $timezone = null, bool $ctr = false): void
|
||||||
|
{
|
||||||
|
$relPart = '';
|
||||||
|
$absPart = preg_replace_callback(
|
||||||
|
'/[+-]?\s*\d+\s+((microsecond|millisecond|[mµu]sec)s?|[mµ]s|sec(ond)?s?|min(ute)?s?|hours?)(\s+ago)?\b/iu',
|
||||||
|
function ($m) use (&$relPart) {
|
||||||
|
$relPart .= $m[0] . ' ';
|
||||||
|
return '';
|
||||||
|
},
|
||||||
|
$datetime,
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($ctr) {
|
||||||
|
parent::__construct($absPart, $timezone);
|
||||||
|
$this->handleErrors($datetime);
|
||||||
|
} elseif (trim($absPart)) {
|
||||||
|
parent::modify($absPart) && $this->handleErrors($datetime);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($relPart) {
|
||||||
|
$timezone ??= $this->getTimezone();
|
||||||
|
$this->setTimezone(new \DateTimeZone('UTC'));
|
||||||
|
parent::modify($relPart) && $this->handleErrors($datetime);
|
||||||
|
$this->setTimezone($timezone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns JSON representation in ISO 8601 (used by JavaScript).
|
* Returns JSON representation in ISO 8601 (used by JavaScript).
|
||||||
*/
|
*/
|
||||||
@@ -130,11 +187,21 @@ class DateTime extends \DateTime implements \JsonSerializable
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a copy with a modified time.
|
* Returns a modified copy of the object. Use (clone $dt)->modify(...) for better type safety.
|
||||||
*/
|
*/
|
||||||
public function modifyClone(string $modify = ''): static
|
public function modifyClone(string $modify = ''): static
|
||||||
{
|
{
|
||||||
$dolly = clone $this;
|
$dolly = clone $this;
|
||||||
return $modify ? $dolly->modify($modify) : $dolly;
|
return $modify ? $dolly->modify($modify) : $dolly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function handleErrors(string $value): void
|
||||||
|
{
|
||||||
|
$errors = self::getLastErrors();
|
||||||
|
$errors = array_merge($errors['errors'] ?? [], $errors['warnings'] ?? []);
|
||||||
|
if ($errors) {
|
||||||
|
throw new \Exception(implode(', ', $errors) . " '$value'");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-10
@@ -1,15 +1,14 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use const DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,14 +17,12 @@ use Nette;
|
|||||||
*/
|
*/
|
||||||
final class FileInfo extends \SplFileInfo
|
final class FileInfo extends \SplFileInfo
|
||||||
{
|
{
|
||||||
private string $relativePath;
|
public function __construct(
|
||||||
|
string $file,
|
||||||
|
private readonly string $relativePath = '',
|
||||||
public function __construct(string $file, string $relativePath = '')
|
) {
|
||||||
{
|
|
||||||
parent::__construct($file);
|
parent::__construct($file);
|
||||||
$this->setInfoClass(static::class);
|
$this->setInfoClass(self::class);
|
||||||
$this->relativePath = $relativePath;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+71
-14
@@ -1,15 +1,15 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function array_pop, chmod, decoct, dirname, end, fclose, file_exists, file_get_contents, file_put_contents, fopen, implode, is_dir, is_file, is_link, mkdir, preg_match, preg_split, realpath, rename, rmdir, rtrim, sprintf, str_replace, stream_copy_to_stream, stream_is_local, strtr, uniqid, unlink, usleep;
|
||||||
|
use const DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,15 +17,13 @@ use Nette;
|
|||||||
*/
|
*/
|
||||||
final class FileSystem
|
final class FileSystem
|
||||||
{
|
{
|
||||||
use Nette\StaticClass;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a directory if it does not exist, including parent directories.
|
* Creates a directory if it does not exist, including parent directories.
|
||||||
* @throws Nette\IOException on error occurred
|
* @throws Nette\IOException on error occurred
|
||||||
*/
|
*/
|
||||||
public static function createDir(string $dir, int $mode = 0777): void
|
public static function createDir(string $dir, int $mode = 0o777): void
|
||||||
{
|
{
|
||||||
if (!is_dir($dir) && !@mkdir($dir, $mode, true) && !is_dir($dir)) { // @ - dir may already exist
|
if (!is_dir($dir) && !@mkdir($dir, $mode, recursive: true) && !is_dir($dir)) { // @ - dir may already exist
|
||||||
throw new Nette\IOException(sprintf(
|
throw new Nette\IOException(sprintf(
|
||||||
"Unable to create directory '%s' with mode %s. %s",
|
"Unable to create directory '%s' with mode %s. %s",
|
||||||
self::normalizePath($dir),
|
self::normalizePath($dir),
|
||||||
@@ -52,14 +50,15 @@ final class FileSystem
|
|||||||
} elseif (is_dir($origin)) {
|
} elseif (is_dir($origin)) {
|
||||||
static::createDir($target);
|
static::createDir($target);
|
||||||
foreach (new \FilesystemIterator($target) as $item) {
|
foreach (new \FilesystemIterator($target) as $item) {
|
||||||
|
\assert($item instanceof \SplFileInfo);
|
||||||
static::delete($item->getPathname());
|
static::delete($item->getPathname());
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($origin, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) {
|
foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($origin, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) {
|
||||||
if ($item->isDir()) {
|
if ($item->isDir()) {
|
||||||
static::createDir($target . '/' . $iterator->getSubPathName());
|
static::createDir($target . '/' . $iterator->getSubPathname());
|
||||||
} else {
|
} else {
|
||||||
static::copy($item->getPathname(), $target . '/' . $iterator->getSubPathName());
|
static::copy($item->getPathname(), $target . '/' . $iterator->getSubPathname());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -112,6 +111,7 @@ final class FileSystem
|
|||||||
}
|
}
|
||||||
} elseif (is_dir($path)) {
|
} elseif (is_dir($path)) {
|
||||||
foreach (new \FilesystemIterator($path) as $item) {
|
foreach (new \FilesystemIterator($path) as $item) {
|
||||||
|
\assert($item instanceof \SplFileInfo);
|
||||||
static::delete($item->getPathname());
|
static::delete($item->getPathname());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,10 +208,10 @@ final class FileSystem
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes the string to a file.
|
* Writes the string to a file. Creates the parent directory if it does not exist. Pass null as $mode to skip chmod.
|
||||||
* @throws Nette\IOException on error occurred
|
* @throws Nette\IOException on error occurred
|
||||||
*/
|
*/
|
||||||
public static function write(string $file, string $content, ?int $mode = 0666): void
|
public static function write(string $file, string $content, ?int $mode = 0o666): void
|
||||||
{
|
{
|
||||||
static::createDir(dirname($file));
|
static::createDir(dirname($file));
|
||||||
if (@file_put_contents($file, $content) === false) { // @ is escalated to exception
|
if (@file_put_contents($file, $content) === false) { // @ is escalated to exception
|
||||||
@@ -233,12 +233,42 @@ final class FileSystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes the string to a file atomically: the content is written to a temporary file, which then replaces
|
||||||
|
* the target, so a concurrent reader never sees the file partially written or truncated.
|
||||||
|
* Creates the parent directory if it does not exist. Pass null as $mode to skip chmod.
|
||||||
|
* @throws Nette\IOException on error occurred
|
||||||
|
*/
|
||||||
|
public static function writeAtomic(string $file, string $content, ?int $mode = 0o666): void
|
||||||
|
{
|
||||||
|
$file = realpath($file) ?: $file; // writes through a symlink to its target, as write() does
|
||||||
|
$tmp = $file . '.' . uniqid('', more_entropy: true) . '.tmp';
|
||||||
|
try {
|
||||||
|
static::write($tmp, $content, $mode);
|
||||||
|
// plain rename() is atomic; static::rename() must not be used here, it deletes the target first
|
||||||
|
for ($i = 0; !@rename($tmp, $file); $i++) { // @ is escalated to exception
|
||||||
|
if (!Helpers::IsWindows || $i >= 20) {
|
||||||
|
throw new Nette\IOException(sprintf(
|
||||||
|
"Unable to write file '%s'. %s",
|
||||||
|
self::normalizePath($file),
|
||||||
|
Helpers::getLastError(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
usleep(5_000); // on Windows, rename fails while the target is open in another process
|
||||||
|
}
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
@unlink($tmp);
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets file permissions to `$fileMode` or directory permissions to `$dirMode`.
|
* Sets file permissions to `$fileMode` or directory permissions to `$dirMode`.
|
||||||
* Recursively traverses and sets permissions on the entire contents of the directory as well.
|
* Recursively traverses and sets permissions on the entire contents of the directory as well.
|
||||||
* @throws Nette\IOException on error occurred
|
* @throws Nette\IOException on error occurred
|
||||||
*/
|
*/
|
||||||
public static function makeWritable(string $path, int $dirMode = 0777, int $fileMode = 0666): void
|
public static function makeWritable(string $path, int $dirMode = 0o777, int $fileMode = 0o666): void
|
||||||
{
|
{
|
||||||
if (is_file($path)) {
|
if (is_file($path)) {
|
||||||
if (!@chmod($path, $fileMode)) { // @ is escalated to exception
|
if (!@chmod($path, $fileMode)) { // @ is escalated to exception
|
||||||
@@ -251,6 +281,7 @@ final class FileSystem
|
|||||||
}
|
}
|
||||||
} elseif (is_dir($path)) {
|
} elseif (is_dir($path)) {
|
||||||
foreach (new \FilesystemIterator($path) as $item) {
|
foreach (new \FilesystemIterator($path) as $item) {
|
||||||
|
\assert($item instanceof \SplFileInfo);
|
||||||
static::makeWritable($item->getPathname(), $dirMode, $fileMode);
|
static::makeWritable($item->getPathname(), $dirMode, $fileMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,7 +304,20 @@ final class FileSystem
|
|||||||
*/
|
*/
|
||||||
public static function isAbsolute(string $path): bool
|
public static function isAbsolute(string $path): bool
|
||||||
{
|
{
|
||||||
return (bool) preg_match('#([a-z]:)?[/\\\\]|[a-z][a-z0-9+.-]*://#Ai', $path);
|
return (bool) preg_match('#([a-z]:)?[/\\\]|[a-z][a-z0-9+.-]*://#Ai', $path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether the string is a valid cross-platform filename without any path information.
|
||||||
|
*/
|
||||||
|
public static function isValidFilename(string $name): bool
|
||||||
|
{
|
||||||
|
[$stem] = explode('.', $name, 2);
|
||||||
|
return $name !== '' && $name !== '.' && $name !== '..'
|
||||||
|
&& !preg_match('#[\x00-\x1F<>:"|?*\\\/]#', $name) // control and reserved characters
|
||||||
|
&& !str_ends_with($name, '.') && !str_ends_with($name, ' ') // trailing dots/spaces
|
||||||
|
&& !preg_match('#^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])$#i', $stem); // Windows reserved device names
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -282,7 +326,7 @@ final class FileSystem
|
|||||||
*/
|
*/
|
||||||
public static function normalizePath(string $path): string
|
public static function normalizePath(string $path): string
|
||||||
{
|
{
|
||||||
$parts = $path === '' ? [] : preg_split('~[/\\\\]+~', $path);
|
$parts = $path === '' ? [] : preg_split('~[/\\\]+~', $path);
|
||||||
$res = [];
|
$res = [];
|
||||||
foreach ($parts as $part) {
|
foreach ($parts as $part) {
|
||||||
if ($part === '..' && $res && end($res) !== '..' && end($res) !== '') {
|
if ($part === '..' && $res && end($res) !== '..' && end($res) !== '') {
|
||||||
@@ -307,6 +351,19 @@ final class FileSystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolves a path against a base path. If the path is absolute, returns it directly, if it's relative, joins it with the base path.
|
||||||
|
*/
|
||||||
|
public static function resolvePath(string $basePath, string $path): string
|
||||||
|
{
|
||||||
|
return match (true) {
|
||||||
|
self::isAbsolute($path) => self::platformSlashes($path),
|
||||||
|
$path === '' => self::platformSlashes($basePath),
|
||||||
|
default => self::joinPaths($basePath, $path),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts backslashes to slashes.
|
* Converts backslashes to slashes.
|
||||||
*/
|
*/
|
||||||
|
|||||||
+98
-59
@@ -1,19 +1,19 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function array_filter, array_merge, array_values, count, func_get_args, func_num_args, glob, implode, is_array, is_dir, iterator_to_array, preg_match, preg_quote, preg_replace, preg_split, rtrim, spl_object_id, sprintf, str_starts_with, strnatcmp, strpbrk, strrpos, strtolower, strtr, substr, trigger_error, usort;
|
||||||
|
use const DIRECTORY_SEPARATOR, E_USER_DEPRECATED, GLOB_NOESCAPE, GLOB_NOSORT, GLOB_ONLYDIR;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finder allows searching through directory trees using iterator.
|
* Searches for files and directories in directory trees.
|
||||||
*
|
*
|
||||||
* Finder::findFiles('*.php')
|
* Finder::findFiles('*.php')
|
||||||
* ->size('> 10kB')
|
* ->size('> 10kB')
|
||||||
@@ -24,44 +24,45 @@ use Nette;
|
|||||||
*/
|
*/
|
||||||
class Finder implements \IteratorAggregate
|
class Finder implements \IteratorAggregate
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
|
||||||
|
|
||||||
/** @var array<array{string, string}> */
|
/** @var array<array{string, string}> */
|
||||||
private array $find = [];
|
private array $find = [];
|
||||||
|
|
||||||
/** @var string[] */
|
/** @var string[] */
|
||||||
private array $in = [];
|
private array $in = [];
|
||||||
|
|
||||||
/** @var \Closure[] */
|
/** @var array<\Closure(FileInfo): bool> */
|
||||||
private array $filters = [];
|
private array $filters = [];
|
||||||
|
|
||||||
/** @var \Closure[] */
|
/** @var array<\Closure(FileInfo): bool> */
|
||||||
private array $descentFilters = [];
|
private array $descentFilters = [];
|
||||||
|
|
||||||
/** @var array<string|self> */
|
/** @var array<string|self> */
|
||||||
private array $appends = [];
|
private array $appends = [];
|
||||||
private bool $childFirst = false;
|
private bool $childFirst = false;
|
||||||
|
|
||||||
/** @var ?callable */
|
/** @var ?(\Closure(FileInfo, FileInfo): int) */
|
||||||
private $sort;
|
private ?\Closure $sort = null;
|
||||||
private int $maxDepth = -1;
|
private int $maxDepth = -1;
|
||||||
private bool $ignoreUnreadableDirs = true;
|
private bool $ignoreUnreadableDirs = true;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Begins search for files and directories matching mask.
|
* Begins search for files and directories matching mask. The ** wildcard searches recursively; a trailing slash limits the mask to directories.
|
||||||
|
* @param string|list<string> $masks
|
||||||
*/
|
*/
|
||||||
public static function find(string|array $masks): static
|
public static function find(string|array $masks = ['*']): static
|
||||||
{
|
{
|
||||||
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
||||||
return (new static)->addMask($masks, 'dir')->addMask($masks, 'file');
|
$files = array_filter($masks, fn(string $mask): bool => !self::hasTrailingSeparator($mask)); // trailing slash means directories only
|
||||||
|
return (new static)->addMask($masks, 'dir')->addMask(array_values($files), 'file');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Begins search for files matching mask.
|
* Begins search for files matching mask. The ** wildcard searches recursively.
|
||||||
|
* @param string|list<string> $masks
|
||||||
*/
|
*/
|
||||||
public static function findFiles(string|array $masks): static
|
public static function findFiles(string|array $masks = ['*']): static
|
||||||
{
|
{
|
||||||
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
||||||
return (new static)->addMask($masks, 'file');
|
return (new static)->addMask($masks, 'file');
|
||||||
@@ -69,9 +70,10 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Begins search for directories matching mask.
|
* Begins search for directories matching mask. The ** wildcard searches recursively.
|
||||||
|
* @param string|list<string> $masks
|
||||||
*/
|
*/
|
||||||
public static function findDirectories(string|array $masks): static
|
public static function findDirectories(string|array $masks = ['*']): static
|
||||||
{
|
{
|
||||||
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
||||||
return (new static)->addMask($masks, 'dir');
|
return (new static)->addMask($masks, 'dir');
|
||||||
@@ -80,8 +82,9 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds files matching the specified masks.
|
* Finds files matching the specified masks.
|
||||||
|
* @param string|list<string> $masks
|
||||||
*/
|
*/
|
||||||
public function files(string|array $masks): static
|
public function files(string|array $masks = ['*']): static
|
||||||
{
|
{
|
||||||
return $this->addMask((array) $masks, 'file');
|
return $this->addMask((array) $masks, 'file');
|
||||||
}
|
}
|
||||||
@@ -89,34 +92,47 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds directories matching the specified masks.
|
* Finds directories matching the specified masks.
|
||||||
|
* @param string|list<string> $masks
|
||||||
*/
|
*/
|
||||||
public function directories(string|array $masks): static
|
public function directories(string|array $masks = ['*']): static
|
||||||
{
|
{
|
||||||
return $this->addMask((array) $masks, 'dir');
|
return $this->addMask((array) $masks, 'dir');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param list<string> $masks */
|
||||||
private function addMask(array $masks, string $mode): static
|
private function addMask(array $masks, string $mode): static
|
||||||
{
|
{
|
||||||
foreach ($masks as $mask) {
|
foreach ($masks as $mask) {
|
||||||
$mask = FileSystem::unixSlashes($mask);
|
$orig = $mask;
|
||||||
if ($mode === 'dir') {
|
if ($mode === 'dir') {
|
||||||
$mask = rtrim($mask, '/');
|
$mask = rtrim($mask, '/\\');
|
||||||
}
|
}
|
||||||
if ($mask === '' || ($mode === 'file' && str_ends_with($mask, '/'))) {
|
if ($mask === '' || ($mode === 'file' && self::hasTrailingSeparator($mask))) {
|
||||||
throw new Nette\InvalidArgumentException("Invalid mask '$mask'");
|
throw new Nette\InvalidArgumentException("Invalid mask '$orig'");
|
||||||
}
|
}
|
||||||
if (str_starts_with($mask, '**/')) {
|
$this->find[] = [self::expandGlobStar($mask), $mode];
|
||||||
$mask = substr($mask, 3);
|
|
||||||
}
|
|
||||||
$this->find[] = [$mask, $mode];
|
|
||||||
}
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static function hasTrailingSeparator(string $mask): bool
|
||||||
|
{
|
||||||
|
return ($last = substr($mask, -1)) === '/' || $last === '\\';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Expands a ** that is not followed by a slash into **/*, so that e.g. "test/**" and "**.c" search recursively.
|
||||||
|
private static function expandGlobStar(string $mask): string
|
||||||
|
{
|
||||||
|
return preg_replace('~(?<=^|[/\\\])\*\*(?![/\\\])~', '**/*', $mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches in the given directories. Wildcards are allowed.
|
* Searches in the given directories. Wildcards * and ? are allowed; unlike in masks, [ and ] are taken literally.
|
||||||
|
* @param string|list<string> $paths
|
||||||
*/
|
*/
|
||||||
public function in(string|array $paths): static
|
public function in(string|array $paths): static
|
||||||
{
|
{
|
||||||
@@ -127,23 +143,25 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches recursively from the given directories. Wildcards are allowed.
|
* Searches recursively from the given directories. Wildcards * and ? are allowed; unlike in masks, [ and ] are taken literally.
|
||||||
|
* @param string|list<string> $paths
|
||||||
*/
|
*/
|
||||||
public function from(string|array $paths): static
|
public function from(string|array $paths): static
|
||||||
{
|
{
|
||||||
$paths = is_array($paths) ? $paths : func_get_args(); // compatibility with variadic
|
$paths = is_array($paths) ? $paths : func_get_args(); // compatibility with variadic
|
||||||
$this->addLocation($paths, '/**');
|
$this->addLocation($paths, DIRECTORY_SEPARATOR . '**');
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param list<string> $paths */
|
||||||
private function addLocation(array $paths, string $ext): void
|
private function addLocation(array $paths, string $ext): void
|
||||||
{
|
{
|
||||||
foreach ($paths as $path) {
|
foreach ($paths as $path) {
|
||||||
if ($path === '') {
|
if ($path === '') {
|
||||||
throw new Nette\InvalidArgumentException("Invalid directory '$path'");
|
throw new Nette\InvalidArgumentException("Invalid directory '$path'");
|
||||||
}
|
}
|
||||||
$path = rtrim(FileSystem::unixSlashes($path), '/');
|
$path = rtrim($path, '/\\');
|
||||||
$this->in[] = $path . $ext;
|
$this->in[] = $path . $ext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,12 +188,12 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a compare function for sorting directory entries. The function will be called to sort entries from the same directory.
|
* Sets a comparison function for sorting entries within each directory.
|
||||||
* @param callable(FileInfo, FileInfo): int $callback
|
* @param callable(FileInfo, FileInfo): int $callback
|
||||||
*/
|
*/
|
||||||
public function sortBy(callable $callback): static
|
public function sortBy(callable $callback): static
|
||||||
{
|
{
|
||||||
$this->sort = $callback;
|
$this->sort = $callback(...);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,7 +209,8 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the specified paths or appends a new finder that returns.
|
* Appends the specified file paths to results. Passing null creates and returns a new sub-finder whose results are appended.
|
||||||
|
* @param string|list<string>|null $paths
|
||||||
*/
|
*/
|
||||||
public function append(string|array|null $paths = null): static
|
public function append(string|array|null $paths = null): static
|
||||||
{
|
{
|
||||||
@@ -208,23 +227,29 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Skips entries that matches the given masks relative to the ones defined with the in() or from() methods.
|
* Skips entries that match the given masks, using the same grammar as find() masks, relative to the directories from in() or from().
|
||||||
|
* A trailing slash excludes directories only; a trailing /* or /** excludes the contents while keeping the directory itself.
|
||||||
|
* @param string|list<string> $masks
|
||||||
*/
|
*/
|
||||||
public function exclude(string|array $masks): static
|
public function exclude(string|array $masks): static
|
||||||
{
|
{
|
||||||
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
$masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic
|
||||||
foreach ($masks as $mask) {
|
foreach ($masks as $mask) {
|
||||||
|
$orig = $mask;
|
||||||
$mask = FileSystem::unixSlashes($mask);
|
$mask = FileSystem::unixSlashes($mask);
|
||||||
if (!preg_match('~^/?(\*\*/)?(.+)(/\*\*|/\*|/|)$~D', $mask, $m)) {
|
if (FileSystem::isAbsolute($mask) || $mask === '..' || str_starts_with($mask, '../')) {
|
||||||
throw new Nette\InvalidArgumentException("Invalid mask '$mask'");
|
trigger_error("Absolute or ../ mask '$orig' in exclude() is deprecated and will change meaning, use a mask relative to the searched directory.", E_USER_DEPRECATED);
|
||||||
|
}
|
||||||
|
if (!preg_match('~^/?(\*\*/)?(.+?)(/\*\*|/\*|/|)$~D', $mask, $m)) {
|
||||||
|
throw new Nette\InvalidArgumentException("Invalid mask '$orig'");
|
||||||
}
|
}
|
||||||
$end = $m[3];
|
$end = $m[3];
|
||||||
$re = $this->buildPattern($m[2]);
|
$re = $this->buildPattern(self::expandGlobStar($m[2]));
|
||||||
$filter = fn(FileInfo $file): bool => ($end && !$file->isDir())
|
$filter = fn(FileInfo $file): bool => ($end && !$file->isDir())
|
||||||
|| !preg_match($re, FileSystem::unixSlashes($file->getRelativePathname()));
|
|| !preg_match($re, FileSystem::unixSlashes($file->getRelativePathname()));
|
||||||
|
|
||||||
$this->descentFilter($filter);
|
$this->descentFilter($filter);
|
||||||
if ($end !== '/*') {
|
if ($end === '' || $end === '/') {
|
||||||
$this->filter($filter);
|
$this->filter($filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -239,7 +264,7 @@ class Finder implements \IteratorAggregate
|
|||||||
*/
|
*/
|
||||||
public function filter(callable $callback): static
|
public function filter(callable $callback): static
|
||||||
{
|
{
|
||||||
$this->filters[] = \Closure::fromCallable($callback);
|
$this->filters[] = $callback(...);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +275,7 @@ class Finder implements \IteratorAggregate
|
|||||||
*/
|
*/
|
||||||
public function descentFilter(callable $callback): static
|
public function descentFilter(callable $callback): static
|
||||||
{
|
{
|
||||||
$this->descentFilters[] = \Closure::fromCallable($callback);
|
$this->descentFilters[] = $callback(...);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,6 +292,7 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Restricts the search by size. $operator accepts "[operator] [size] [unit]" example: >=10kB
|
* Restricts the search by size. $operator accepts "[operator] [size] [unit]" example: >=10kB
|
||||||
|
* @param '>'|'>='|'<'|'<='|'='|'=='|'==='|'!='|'!=='|'<>' $operator or predicate string
|
||||||
*/
|
*/
|
||||||
public function size(string $operator, ?int $size = null): static
|
public function size(string $operator, ?int $size = null): static
|
||||||
{
|
{
|
||||||
@@ -277,7 +303,7 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
[, $operator, $size, $unit] = $matches;
|
[, $operator, $size, $unit] = $matches;
|
||||||
$units = ['' => 1, 'k' => 1e3, 'm' => 1e6, 'g' => 1e9];
|
$units = ['' => 1, 'k' => 1e3, 'm' => 1e6, 'g' => 1e9];
|
||||||
$size *= $units[strtolower($unit)];
|
$size = (float) $size * $units[strtolower($unit)];
|
||||||
$operator = $operator ?: '=';
|
$operator = $operator ?: '=';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,6 +313,7 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Restricts the search by modified time. $operator accepts "[operator] [date]" example: >1978-01-23
|
* Restricts the search by modified time. $operator accepts "[operator] [date]" example: >1978-01-23
|
||||||
|
* @param '>'|'>='|'<'|'<='|'='|'=='|'==='|'!='|'!=='|'<>' $operator or predicate string
|
||||||
*/
|
*/
|
||||||
public function date(string $operator, string|int|\DateTimeInterface|null $date = null): static
|
public function date(string $operator, string|int|\DateTimeInterface|null $date = null): static
|
||||||
{
|
{
|
||||||
@@ -299,7 +326,7 @@ class Finder implements \IteratorAggregate
|
|||||||
$operator = $operator ?: '=';
|
$operator = $operator ?: '=';
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = DateTime::from($date)->format('U');
|
$date = DateTime::from($date)->getTimestamp();
|
||||||
return $this->filter(fn(FileInfo $file): bool => !$file->isFile() || Helpers::compare($file->getMTime(), $operator, $date));
|
return $this->filter(fn(FileInfo $file): bool => !$file->isFile() || Helpers::compare($file->getMTime(), $operator, $date));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,10 +336,11 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array with all found files and directories.
|
* Returns an array with all found files and directories.
|
||||||
|
* @return list<FileInfo>
|
||||||
*/
|
*/
|
||||||
public function collect(): array
|
public function collect(): array
|
||||||
{
|
{
|
||||||
return iterator_to_array($this->getIterator());
|
return iterator_to_array($this->getIterator(), preserve_keys: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -328,7 +356,6 @@ class Finder implements \IteratorAggregate
|
|||||||
if ($item instanceof self) {
|
if ($item instanceof self) {
|
||||||
yield from $item->getIterator();
|
yield from $item->getIterator();
|
||||||
} else {
|
} else {
|
||||||
$item = FileSystem::platformSlashes($item);
|
|
||||||
yield $item => new FileInfo($item);
|
yield $item => new FileInfo($item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -336,7 +363,7 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<\stdClass{pattern: string, mode: string, recursive: bool}> $searches
|
* @param array<object{pattern: string, mode: string, recursive: bool}> $searches
|
||||||
* @param string[] $subdirs
|
* @param string[] $subdirs
|
||||||
* @return \Generator<string, FileInfo>
|
* @return \Generator<string, FileInfo>
|
||||||
*/
|
*/
|
||||||
@@ -345,11 +372,11 @@ class Finder implements \IteratorAggregate
|
|||||||
if ($this->maxDepth >= 0 && count($subdirs) > $this->maxDepth) {
|
if ($this->maxDepth >= 0 && count($subdirs) > $this->maxDepth) {
|
||||||
return;
|
return;
|
||||||
} elseif (!is_dir($dir)) {
|
} elseif (!is_dir($dir)) {
|
||||||
throw new Nette\InvalidStateException("Directory '$dir' not found.");
|
throw new Nette\InvalidStateException(sprintf("Directory '%s' does not exist.", rtrim($dir, '/\\')));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$pathNames = new \FilesystemIterator($dir, \FilesystemIterator::FOLLOW_SYMLINKS | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::UNIX_PATHS);
|
$pathNames = new \FilesystemIterator($dir, \FilesystemIterator::FOLLOW_SYMLINKS | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::CURRENT_AS_PATHNAME);
|
||||||
} catch (\UnexpectedValueException $e) {
|
} catch (\UnexpectedValueException $e) {
|
||||||
if ($this->ignoreUnreadableDirs) {
|
if ($this->ignoreUnreadableDirs) {
|
||||||
return;
|
return;
|
||||||
@@ -358,7 +385,7 @@ class Finder implements \IteratorAggregate
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$files = $this->convertToFiles($pathNames, implode('/', $subdirs), FileSystem::isAbsolute($dir));
|
$files = $this->convertToFiles($pathNames, implode(DIRECTORY_SEPARATOR, $subdirs), FileSystem::isAbsolute($dir));
|
||||||
|
|
||||||
if ($this->sort) {
|
if ($this->sort) {
|
||||||
$files = iterator_to_array($files);
|
$files = iterator_to_array($files);
|
||||||
@@ -384,7 +411,7 @@ class Finder implements \IteratorAggregate
|
|||||||
$relativePathname = FileSystem::unixSlashes($file->getRelativePathname());
|
$relativePathname = FileSystem::unixSlashes($file->getRelativePathname());
|
||||||
foreach ($searches as $search) {
|
foreach ($searches as $search) {
|
||||||
if (
|
if (
|
||||||
$file->getType() === $search->mode
|
"is_$search->mode"(Helpers::IsWindows && $file->isLink() ? $file->getLinkTarget() : $file->getPathname())
|
||||||
&& preg_match($search->pattern, $relativePathname)
|
&& preg_match($search->pattern, $relativePathname)
|
||||||
&& $this->proveFilters($this->filters, $file, $cache)
|
&& $this->proveFilters($this->filters, $file, $cache)
|
||||||
) {
|
) {
|
||||||
@@ -400,18 +427,22 @@ class Finder implements \IteratorAggregate
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param iterable<string> $pathNames */
|
||||||
private function convertToFiles(iterable $pathNames, string $relativePath, bool $absolute): \Generator
|
private function convertToFiles(iterable $pathNames, string $relativePath, bool $absolute): \Generator
|
||||||
{
|
{
|
||||||
foreach ($pathNames as $pathName) {
|
foreach ($pathNames as $pathName) {
|
||||||
if (!$absolute) {
|
if (!$absolute) {
|
||||||
$pathName = preg_replace('~\.?/~A', '', $pathName);
|
$pathName = preg_replace('~\.?[\\\/]~A', '', $pathName);
|
||||||
}
|
}
|
||||||
$pathName = FileSystem::platformSlashes($pathName);
|
|
||||||
yield new FileInfo($pathName, $relativePath);
|
yield new FileInfo($pathName, $relativePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param (\Closure(FileInfo): bool)[] $filters
|
||||||
|
* @param array<int, bool> $cache
|
||||||
|
*/
|
||||||
private function proveFilters(array $filters, FileInfo $file, array &$cache): bool
|
private function proveFilters(array $filters, FileInfo $file, array &$cache): bool
|
||||||
{
|
{
|
||||||
foreach ($filters as $filter) {
|
foreach ($filters as $filter) {
|
||||||
@@ -426,7 +457,7 @@ class Finder implements \IteratorAggregate
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** @return array<string, array<\stdClass{pattern: string, mode: string, recursive: bool}>> */
|
/** @return array<string, array<object{pattern: string, mode: string, recursive: bool}>> */
|
||||||
private function buildPlan(): array
|
private function buildPlan(): array
|
||||||
{
|
{
|
||||||
$plan = $dirCache = [];
|
$plan = $dirCache = [];
|
||||||
@@ -440,7 +471,7 @@ class Finder implements \IteratorAggregate
|
|||||||
} else {
|
} else {
|
||||||
foreach ($this->in ?: ['.'] as $in) {
|
foreach ($this->in ?: ['.'] as $in) {
|
||||||
$in = strtr($in, ['[' => '[[]', ']' => '[]]']); // in path, do not treat [ and ] as a pattern by glob()
|
$in = strtr($in, ['[' => '[[]', ']' => '[]]']); // in path, do not treat [ and ] as a pattern by glob()
|
||||||
$splits[] = self::splitRecursivePart($in . '/' . $mask);
|
$splits[] = self::splitRecursivePart($in . DIRECTORY_SEPARATOR . $mask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,6 +481,10 @@ class Finder implements \IteratorAggregate
|
|||||||
? glob($base, GLOB_NOSORT | GLOB_ONLYDIR | GLOB_NOESCAPE)
|
? glob($base, GLOB_NOSORT | GLOB_ONLYDIR | GLOB_NOESCAPE)
|
||||||
: [strtr($base, ['[[]' => '[', '[]]' => ']'])]; // unescape [ and ]
|
: [strtr($base, ['[[]' => '[', '[]]' => ']'])]; // unescape [ and ]
|
||||||
|
|
||||||
|
if (!$dirs) {
|
||||||
|
throw new Nette\InvalidStateException(sprintf("Directory '%s' does not exist.", rtrim($base, '/\\')));
|
||||||
|
}
|
||||||
|
|
||||||
$search = (object) ['pattern' => $this->buildPattern($rest), 'mode' => $mode, 'recursive' => $recursive];
|
$search = (object) ['pattern' => $this->buildPattern($rest), 'mode' => $mode, 'recursive' => $recursive];
|
||||||
foreach ($dirs as $dir) {
|
foreach ($dirs as $dir) {
|
||||||
$plan[$dir][] = $search;
|
$plan[$dir][] = $search;
|
||||||
@@ -463,14 +498,17 @@ class Finder implements \IteratorAggregate
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Since glob() does not know ** wildcard, we divide the path into a part for glob and a part for manual traversal.
|
* Since glob() does not know ** wildcard, we divide the path into a part for glob and a part for manual traversal.
|
||||||
|
* @return array{string, string, bool}
|
||||||
*/
|
*/
|
||||||
private static function splitRecursivePart(string $path): array
|
private static function splitRecursivePart(string $path): array
|
||||||
{
|
{
|
||||||
$a = strrpos($path, '/');
|
$pos = strrpos(strtr($path, '\\', '/'), '/');
|
||||||
$parts = preg_split('~(?<=^|/)\*\*($|/)~', substr($path, 0, $a + 1), 2);
|
$dir = $pos === false ? '' : substr($path, 0, $pos + 1);
|
||||||
|
$file = $pos === false ? $path : substr($path, $pos + 1);
|
||||||
|
$parts = preg_split('~(?<=^|[\\\/])\*\*($|[\\\/])~', $dir, 2);
|
||||||
return isset($parts[1])
|
return isset($parts[1])
|
||||||
? [$parts[0], $parts[1] . substr($path, $a + 1), true]
|
? [$parts[0], $parts[1] . $file, true]
|
||||||
: [$parts[0], substr($path, $a + 1), false];
|
: [$parts[0], $file, false];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -479,6 +517,7 @@ class Finder implements \IteratorAggregate
|
|||||||
*/
|
*/
|
||||||
private function buildPattern(string $mask): string
|
private function buildPattern(string $mask): string
|
||||||
{
|
{
|
||||||
|
$mask = FileSystem::unixSlashes($mask);
|
||||||
if ($mask === '*') {
|
if ($mask === '*') {
|
||||||
return '##';
|
return '##';
|
||||||
} elseif (str_starts_with($mask, './')) {
|
} elseif (str_starts_with($mask, './')) {
|
||||||
@@ -500,6 +539,6 @@ class Finder implements \IteratorAggregate
|
|||||||
'\-' => '-',
|
'\-' => '-',
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
return '#' . $anchor . $pattern . '$#D' . (defined('PHP_WINDOWS_VERSION_BUILD') ? 'i' : '');
|
return '#' . $anchor . $pattern . '$#D' . (Helpers::IsWindows ? 'i' : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -1,15 +1,14 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function abs, is_finite, is_nan, max, round;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+27
-6
@@ -1,25 +1,32 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function array_unique, ini_get, levenshtein, max, min, ob_end_clean, ob_get_clean, ob_start, preg_replace, strlen;
|
||||||
|
use const PHP_OS_FAMILY;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Miscellaneous utilities.
|
||||||
|
*/
|
||||||
class Helpers
|
class Helpers
|
||||||
{
|
{
|
||||||
|
public const IsWindows = PHP_OS_FAMILY === 'Windows';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes a callback and returns the captured output as a string.
|
* Executes a callback and returns the captured output as a string.
|
||||||
|
* @param callable(): void $func
|
||||||
*/
|
*/
|
||||||
public static function capture(callable $func): string
|
public static function capture(callable $func): string
|
||||||
{
|
{
|
||||||
ob_start(function () {});
|
ob_start(fn() => '');
|
||||||
try {
|
try {
|
||||||
$func();
|
$func();
|
||||||
return ob_get_clean();
|
return ob_get_clean();
|
||||||
@@ -32,7 +39,7 @@ class Helpers
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the last occurred PHP error or an empty string if no error occurred. Unlike error_get_last(),
|
* Returns the last occurred PHP error or an empty string if no error occurred. Unlike error_get_last(),
|
||||||
* it is nit affected by the PHP directive html_errors and always returns text, not HTML.
|
* it is not affected by the PHP directive html_errors and always returns text, not HTML.
|
||||||
*/
|
*/
|
||||||
public static function getLastError(): string
|
public static function getLastError(): string
|
||||||
{
|
{
|
||||||
@@ -54,6 +61,7 @@ class Helpers
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns value clamped to the inclusive range of min and max.
|
* Returns value clamped to the inclusive range of min and max.
|
||||||
|
* @return ($value is float ? float : ($min is float ? float : ($max is float ? float : int)))
|
||||||
*/
|
*/
|
||||||
public static function clamp(int|float $value, int|float $min, int|float $max): int|float
|
public static function clamp(int|float $value, int|float $min, int|float $max): int|float
|
||||||
{
|
{
|
||||||
@@ -66,7 +74,7 @@ class Helpers
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Looks for a string from possibilities that is most similar to value, but not the same (for 8-bit encoding).
|
* Finds the string from $possibilities most similar to $value using Levenshtein distance, or null if none is close enough.
|
||||||
* @param string[] $possibilities
|
* @param string[] $possibilities
|
||||||
*/
|
*/
|
||||||
public static function getSuggestion(array $possibilities, string $value): ?string
|
public static function getSuggestion(array $possibilities, string $value): ?string
|
||||||
@@ -86,6 +94,7 @@ class Helpers
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares two values in the same way that PHP does. Recognizes operators: >, >=, <, <=, =, ==, ===, !=, !==, <>
|
* Compares two values in the same way that PHP does. Recognizes operators: >, >=, <, <=, =, ==, ===, !=, !==, <>
|
||||||
|
* @param '>'|'>='|'<'|'<='|'='|'=='|'==='|'!='|'!=='|'<>' $operator
|
||||||
*/
|
*/
|
||||||
public static function compare(mixed $left, string $operator, mixed $right): bool
|
public static function compare(mixed $left, string $operator, mixed $right): bool
|
||||||
{
|
{
|
||||||
@@ -101,4 +110,16 @@ class Helpers
|
|||||||
default => throw new Nette\InvalidArgumentException("Unknown operator '$operator'"),
|
default => throw new Nette\InvalidArgumentException("Unknown operator '$operator'"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Splits a class name into namespace and short class name.
|
||||||
|
* @return array{string, string}
|
||||||
|
*/
|
||||||
|
public static function splitClassName(string $name): array
|
||||||
|
{
|
||||||
|
return ($pos = strrpos($name, '\\')) === false
|
||||||
|
? ['', $name]
|
||||||
|
: [substr($name, 0, $pos), substr($name, $pos + 1)];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+190
-141
@@ -1,129 +1,127 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
|
||||||
use Nette\HtmlStringable;
|
use Nette\HtmlStringable;
|
||||||
use function is_array, is_float, is_object, is_string;
|
use function array_merge, array_splice, count, explode, func_num_args, html_entity_decode, htmlspecialchars, http_build_query, implode, is_array, is_bool, is_float, is_object, is_string, json_encode, max, number_format, rtrim, str_contains, str_repeat, str_replace, strip_tags, strncmp, strpbrk, substr, trigger_error, ucfirst;
|
||||||
|
use const E_USER_DEPRECATED, ENT_HTML5, ENT_NOQUOTES, ENT_QUOTES;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTML helper.
|
* Generates HTML elements with automatic attribute escaping.
|
||||||
*
|
*
|
||||||
* @property string|null $accept
|
* @property ?string $accept
|
||||||
* @property string|null $accesskey
|
* @property ?string $accesskey
|
||||||
* @property string|null $action
|
* @property ?string $action
|
||||||
* @property string|null $align
|
* @property ?string $align
|
||||||
* @property string|null $allow
|
* @property ?string $allow
|
||||||
* @property string|null $alt
|
* @property ?string $alt
|
||||||
* @property bool|null $async
|
* @property ?bool $async
|
||||||
* @property string|null $autocapitalize
|
* @property ?string $autocapitalize
|
||||||
* @property string|null $autocomplete
|
* @property ?string $autocomplete
|
||||||
* @property bool|null $autofocus
|
* @property ?bool $autofocus
|
||||||
* @property bool|null $autoplay
|
* @property ?bool $autoplay
|
||||||
* @property string|null $charset
|
* @property ?string $charset
|
||||||
* @property bool|null $checked
|
* @property ?bool $checked
|
||||||
* @property string|null $cite
|
* @property ?string $cite
|
||||||
* @property string|null $class
|
* @property ?string $class
|
||||||
* @property int|null $cols
|
* @property ?int $cols
|
||||||
* @property int|null $colspan
|
* @property ?int $colspan
|
||||||
* @property string|null $content
|
* @property ?string $content
|
||||||
* @property bool|null $contenteditable
|
* @property ?bool $contenteditable
|
||||||
* @property bool|null $controls
|
* @property ?bool $controls
|
||||||
* @property string|null $coords
|
* @property ?string $coords
|
||||||
* @property string|null $crossorigin
|
* @property ?string $crossorigin
|
||||||
* @property string|null $data
|
* @property ?string $data
|
||||||
* @property string|null $datetime
|
* @property ?string $datetime
|
||||||
* @property string|null $decoding
|
* @property ?string $decoding
|
||||||
* @property bool|null $default
|
* @property ?bool $default
|
||||||
* @property bool|null $defer
|
* @property ?bool $defer
|
||||||
* @property string|null $dir
|
* @property ?string $dir
|
||||||
* @property string|null $dirname
|
* @property ?string $dirname
|
||||||
* @property bool|null $disabled
|
* @property ?bool $disabled
|
||||||
* @property bool|null $download
|
* @property ?bool $download
|
||||||
* @property string|null $draggable
|
* @property ?string $draggable
|
||||||
* @property string|null $dropzone
|
* @property ?string $dropzone
|
||||||
* @property string|null $enctype
|
* @property ?string $enctype
|
||||||
* @property string|null $for
|
* @property ?string $for
|
||||||
* @property string|null $form
|
* @property ?string $form
|
||||||
* @property string|null $formaction
|
* @property ?string $formaction
|
||||||
* @property string|null $formenctype
|
* @property ?string $formenctype
|
||||||
* @property string|null $formmethod
|
* @property ?string $formmethod
|
||||||
* @property bool|null $formnovalidate
|
* @property ?bool $formnovalidate
|
||||||
* @property string|null $formtarget
|
* @property ?string $formtarget
|
||||||
* @property string|null $headers
|
* @property ?string $headers
|
||||||
* @property int|null $height
|
* @property ?int $height
|
||||||
* @property bool|null $hidden
|
* @property ?bool $hidden
|
||||||
* @property float|null $high
|
* @property ?float $high
|
||||||
* @property string|null $href
|
* @property ?string $href
|
||||||
* @property string|null $hreflang
|
* @property ?string $hreflang
|
||||||
* @property string|null $id
|
* @property ?string $id
|
||||||
* @property string|null $integrity
|
* @property ?string $integrity
|
||||||
* @property string|null $inputmode
|
* @property ?string $inputmode
|
||||||
* @property bool|null $ismap
|
* @property ?bool $ismap
|
||||||
* @property string|null $itemprop
|
* @property ?string $itemprop
|
||||||
* @property string|null $kind
|
* @property ?string $kind
|
||||||
* @property string|null $label
|
* @property ?string $label
|
||||||
* @property string|null $lang
|
* @property ?string $lang
|
||||||
* @property string|null $list
|
* @property ?string $list
|
||||||
* @property bool|null $loop
|
* @property ?bool $loop
|
||||||
* @property float|null $low
|
* @property ?float $low
|
||||||
* @property float|null $max
|
* @property ?float $max
|
||||||
* @property int|null $maxlength
|
* @property ?int $maxlength
|
||||||
* @property int|null $minlength
|
* @property ?int $minlength
|
||||||
* @property string|null $media
|
* @property ?string $media
|
||||||
* @property string|null $method
|
* @property ?string $method
|
||||||
* @property float|null $min
|
* @property ?float $min
|
||||||
* @property bool|null $multiple
|
* @property ?bool $multiple
|
||||||
* @property bool|null $muted
|
* @property ?bool $muted
|
||||||
* @property string|null $name
|
* @property ?string $name
|
||||||
* @property bool|null $novalidate
|
* @property ?bool $novalidate
|
||||||
* @property bool|null $open
|
* @property ?bool $open
|
||||||
* @property float|null $optimum
|
* @property ?float $optimum
|
||||||
* @property string|null $pattern
|
* @property ?string $pattern
|
||||||
* @property string|null $ping
|
* @property ?string $ping
|
||||||
* @property string|null $placeholder
|
* @property ?string $placeholder
|
||||||
* @property string|null $poster
|
* @property ?string $poster
|
||||||
* @property string|null $preload
|
* @property ?string $preload
|
||||||
* @property string|null $radiogroup
|
* @property ?string $radiogroup
|
||||||
* @property bool|null $readonly
|
* @property ?bool $readonly
|
||||||
* @property string|null $rel
|
* @property ?string $rel
|
||||||
* @property bool|null $required
|
* @property ?bool $required
|
||||||
* @property bool|null $reversed
|
* @property ?bool $reversed
|
||||||
* @property int|null $rows
|
* @property ?int $rows
|
||||||
* @property int|null $rowspan
|
* @property ?int $rowspan
|
||||||
* @property string|null $sandbox
|
* @property ?string $sandbox
|
||||||
* @property string|null $scope
|
* @property ?string $scope
|
||||||
* @property bool|null $selected
|
* @property ?bool $selected
|
||||||
* @property string|null $shape
|
* @property ?string $shape
|
||||||
* @property int|null $size
|
* @property ?int $size
|
||||||
* @property string|null $sizes
|
* @property ?string $sizes
|
||||||
* @property string|null $slot
|
* @property ?string $slot
|
||||||
* @property int|null $span
|
* @property ?int $span
|
||||||
* @property string|null $spellcheck
|
* @property ?string $spellcheck
|
||||||
* @property string|null $src
|
* @property ?string $src
|
||||||
* @property string|null $srcdoc
|
* @property ?string $srcdoc
|
||||||
* @property string|null $srclang
|
* @property ?string $srclang
|
||||||
* @property string|null $srcset
|
* @property ?string $srcset
|
||||||
* @property int|null $start
|
* @property ?int $start
|
||||||
* @property float|null $step
|
* @property ?float $step
|
||||||
* @property string|null $style
|
* @property ?string $style
|
||||||
* @property int|null $tabindex
|
* @property ?int $tabindex
|
||||||
* @property string|null $target
|
* @property ?string $target
|
||||||
* @property string|null $title
|
* @property ?string $title
|
||||||
* @property string|null $translate
|
* @property ?string $translate
|
||||||
* @property string|null $type
|
* @property ?string $type
|
||||||
* @property string|null $usemap
|
* @property ?string $usemap
|
||||||
* @property string|null $value
|
* @property ?string $value
|
||||||
* @property int|null $width
|
* @property ?int $width
|
||||||
* @property string|null $wrap
|
* @property ?string $wrap
|
||||||
*
|
*
|
||||||
* @method self accept(?string $val)
|
* @method self accept(?string $val)
|
||||||
* @method self accesskey(?string $val, bool $state = null)
|
* @method self accesskey(?string $val, bool $state = null)
|
||||||
@@ -230,23 +228,27 @@ use function is_array, is_float, is_object, is_string;
|
|||||||
* @method self value(?string $val)
|
* @method self value(?string $val)
|
||||||
* @method self width(?int $val)
|
* @method self width(?int $val)
|
||||||
* @method self wrap(?string $val)
|
* @method self wrap(?string $val)
|
||||||
|
*
|
||||||
|
* @method static static text(mixed $text)
|
||||||
|
* @method static static html(mixed $html)
|
||||||
|
*
|
||||||
|
* @implements \IteratorAggregate<int, self|string>
|
||||||
|
* @implements \ArrayAccess<int, self|string>
|
||||||
*/
|
*/
|
||||||
class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringable
|
class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringable
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
|
||||||
|
|
||||||
/** @var array<string, mixed> element's attributes */
|
/** @var array<string, mixed> element's attributes */
|
||||||
public $attrs = [];
|
public array $attrs = [];
|
||||||
|
|
||||||
/** void elements */
|
/** @var array<string, int> void elements */
|
||||||
public static $emptyElements = [
|
public static array $emptyElements = [
|
||||||
'img' => 1, 'hr' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'area' => 1, 'embed' => 1, 'keygen' => 1,
|
'img' => 1, 'hr' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'area' => 1, 'embed' => 1, 'keygen' => 1,
|
||||||
'source' => 1, 'base' => 1, 'col' => 1, 'link' => 1, 'param' => 1, 'basefont' => 1, 'frame' => 1,
|
'source' => 1, 'base' => 1, 'col' => 1, 'link' => 1, 'param' => 1, 'basefont' => 1, 'frame' => 1,
|
||||||
'isindex' => 1, 'wbr' => 1, 'command' => 1, 'track' => 1,
|
'isindex' => 1, 'wbr' => 1, 'command' => 1, 'track' => 1,
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var array<int, HtmlStringable|string> nodes */
|
/** @var array<int, self|string> nodes */
|
||||||
protected $children = [];
|
protected array $children = [];
|
||||||
|
|
||||||
/** element's name */
|
/** element's name */
|
||||||
private string $name = '';
|
private string $name = '';
|
||||||
@@ -256,7 +258,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs new HTML element.
|
* Constructs new HTML element.
|
||||||
* @param array|string $attrs element's attributes or plain text content
|
* @param array<string, mixed>|string|null $attrs element's attributes or plain text content
|
||||||
*/
|
*/
|
||||||
public static function el(?string $name = null, array|string|null $attrs = null): static
|
public static function el(?string $name = null, array|string|null $attrs = null): static
|
||||||
{
|
{
|
||||||
@@ -281,8 +283,19 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a nameless element (fragment) containing the given children.
|
||||||
|
* Everything except HtmlStringable is escaped; use Html::html() for raw HTML. Nulls are skipped.
|
||||||
|
*/
|
||||||
|
public static function fragment(HtmlStringable|\Stringable|string|int|null ...$children): static
|
||||||
|
{
|
||||||
|
return (new static)->add(...$children);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an object representing HTML text.
|
* Returns an object representing HTML text.
|
||||||
|
* @deprecated use Html::html()
|
||||||
*/
|
*/
|
||||||
public static function fromHtml(string $html): static
|
public static function fromHtml(string $html): static
|
||||||
{
|
{
|
||||||
@@ -292,6 +305,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an object representing plain text.
|
* Returns an object representing plain text.
|
||||||
|
* @deprecated use Html::text()
|
||||||
*/
|
*/
|
||||||
public static function fromText(string $text): static
|
public static function fromText(string $text): static
|
||||||
{
|
{
|
||||||
@@ -347,7 +361,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is element empty?
|
* Checks whether the element is a void (self-closing) element.
|
||||||
*/
|
*/
|
||||||
final public function isEmpty(): bool
|
final public function isEmpty(): bool
|
||||||
{
|
{
|
||||||
@@ -357,6 +371,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets multiple attributes.
|
* Sets multiple attributes.
|
||||||
|
* @param array<string, mixed> $attrs
|
||||||
*/
|
*/
|
||||||
public function addAttributes(array $attrs): static
|
public function addAttributes(array $attrs): static
|
||||||
{
|
{
|
||||||
@@ -419,6 +434,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Unsets element's attributes.
|
* Unsets element's attributes.
|
||||||
|
* @param list<string> $attributes
|
||||||
*/
|
*/
|
||||||
public function removeAttributes(array $attributes): static
|
public function removeAttributes(array $attributes): static
|
||||||
{
|
{
|
||||||
@@ -431,7 +447,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overloaded setter for element's attribute.
|
* Sets element's attribute via property assignment.
|
||||||
*/
|
*/
|
||||||
final public function __set(string $name, mixed $value): void
|
final public function __set(string $name, mixed $value): void
|
||||||
{
|
{
|
||||||
@@ -440,7 +456,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overloaded getter for element's attribute.
|
* Returns element's attribute via property access.
|
||||||
*/
|
*/
|
||||||
final public function &__get(string $name): mixed
|
final public function &__get(string $name): mixed
|
||||||
{
|
{
|
||||||
@@ -449,7 +465,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overloaded tester for element's attribute.
|
* Checks if element's attribute is set.
|
||||||
*/
|
*/
|
||||||
final public function __isset(string $name): bool
|
final public function __isset(string $name): bool
|
||||||
{
|
{
|
||||||
@@ -458,7 +474,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overloaded unsetter for element's attribute.
|
* Unsets element's attribute via property unset.
|
||||||
*/
|
*/
|
||||||
final public function __unset(string $name): void
|
final public function __unset(string $name): void
|
||||||
{
|
{
|
||||||
@@ -467,10 +483,15 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overloaded setter for element's attribute.
|
* Sets or returns element's attribute via method call.
|
||||||
|
* @param mixed[] $args
|
||||||
*/
|
*/
|
||||||
final public function __call(string $m, array $args): mixed
|
final public function __call(string $m, array $args): mixed
|
||||||
{
|
{
|
||||||
|
if ($m === 'text' || $m === 'html') {
|
||||||
|
trigger_error("Method \$el->$m() is deprecated, use set" . ucfirst($m) . "() for content or setAttribute() for the '$m' attribute; Html::$m() is a static factory.", E_USER_DEPRECATED);
|
||||||
|
}
|
||||||
|
|
||||||
$p = substr($m, 0, 3);
|
$p = substr($m, 0, 3);
|
||||||
if ($p === 'get' || $p === 'set' || $p === 'add') {
|
if ($p === 'get' || $p === 'set' || $p === 'add') {
|
||||||
$m = substr($m, 3);
|
$m = substr($m, 3);
|
||||||
@@ -496,8 +517,23 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates element with escaped text (Html::text()) or raw HTML (Html::html()) content.
|
||||||
|
* @param mixed[] $args
|
||||||
|
*/
|
||||||
|
final public static function __callStatic(string $name, array $args): static
|
||||||
|
{
|
||||||
|
return match ($name) {
|
||||||
|
'text' => (new static)->setText(...$args),
|
||||||
|
'html' => (new static)->setHtml(...$args),
|
||||||
|
default => ObjectHelpers::strictStaticCall(static::class, $name),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Special setter for element's attribute.
|
* Special setter for element's attribute.
|
||||||
|
* @param array<string, mixed> $query
|
||||||
*/
|
*/
|
||||||
final public function href(string $path, array $query = []): static
|
final public function href(string $path, array $query = []): static
|
||||||
{
|
{
|
||||||
@@ -572,10 +608,25 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Appends the given children. Everything except HtmlStringable is escaped; use Html::html() for raw HTML. Nulls are skipped.
|
||||||
|
*/
|
||||||
|
public function add(HtmlStringable|\Stringable|string|int|null ...$children): static
|
||||||
|
{
|
||||||
|
foreach ($children as $child) {
|
||||||
|
if ($child !== null) {
|
||||||
|
$this->addText($child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds new element's child.
|
* Adds new element's child.
|
||||||
*/
|
*/
|
||||||
final public function addHtml(mixed $child): static
|
final public function addHtml(HtmlStringable|string $child): static
|
||||||
{
|
{
|
||||||
return $this->insert(null, $child);
|
return $this->insert(null, $child);
|
||||||
}
|
}
|
||||||
@@ -584,7 +635,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
/**
|
/**
|
||||||
* Appends plain-text string to element content.
|
* Appends plain-text string to element content.
|
||||||
*/
|
*/
|
||||||
public function addText(mixed $text): static
|
public function addText(\Stringable|string|int|null $text): static
|
||||||
{
|
{
|
||||||
if (!$text instanceof HtmlStringable) {
|
if (!$text instanceof HtmlStringable) {
|
||||||
$text = htmlspecialchars((string) $text, ENT_NOQUOTES, 'UTF-8');
|
$text = htmlspecialchars((string) $text, ENT_NOQUOTES, 'UTF-8');
|
||||||
@@ -596,6 +647,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates and adds a new Html child.
|
* Creates and adds a new Html child.
|
||||||
|
* @param array<string, mixed>|string|null $attrs
|
||||||
*/
|
*/
|
||||||
final public function create(string $name, array|string|null $attrs = null): static
|
final public function create(string $name, array|string|null $attrs = null): static
|
||||||
{
|
{
|
||||||
@@ -623,12 +675,12 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts (replaces) child node (\ArrayAccess implementation).
|
* Inserts (replaces) child node (\ArrayAccess implementation).
|
||||||
* @param int|null $index position or null for appending
|
* @param ?int $index position or null for appending
|
||||||
* @param Html|string $child Html node or raw HTML string
|
* @param Html|string $child Html node or raw HTML string
|
||||||
*/
|
*/
|
||||||
final public function offsetSet($index, $child): void
|
final public function offsetSet($index, $child): void
|
||||||
{
|
{
|
||||||
$this->insert($index, $child, true);
|
$this->insert($index, $child, replace: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -636,7 +688,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
* Returns child node (\ArrayAccess implementation).
|
* Returns child node (\ArrayAccess implementation).
|
||||||
* @param int $index
|
* @param int $index
|
||||||
*/
|
*/
|
||||||
final public function offsetGet($index): HtmlStringable|string
|
final public function offsetGet($index): self|string
|
||||||
{
|
{
|
||||||
return $this->children[$index];
|
return $this->children[$index];
|
||||||
}
|
}
|
||||||
@@ -684,7 +736,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Iterates over elements.
|
* Iterates over elements.
|
||||||
* @return \ArrayIterator<int, HtmlStringable|string>
|
* @return \ArrayIterator<int, self|string>
|
||||||
*/
|
*/
|
||||||
final public function getIterator(): \ArrayIterator
|
final public function getIterator(): \ArrayIterator
|
||||||
{
|
{
|
||||||
@@ -694,6 +746,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all children.
|
* Returns all children.
|
||||||
|
* @return array<int, self|string>
|
||||||
*/
|
*/
|
||||||
final public function getChildren(): array
|
final public function getChildren(): array
|
||||||
{
|
{
|
||||||
@@ -702,7 +755,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders element's start tag, content and end tag.
|
* Renders element's start tag, content and end tag. Pass indent level to enable pretty-printing.
|
||||||
*/
|
*/
|
||||||
final public function render(?int $indent = null): string
|
final public function render(?int $indent = null): string
|
||||||
{
|
{
|
||||||
@@ -766,10 +819,6 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
*/
|
*/
|
||||||
final public function attributes(): string
|
final public function attributes(): string
|
||||||
{
|
{
|
||||||
if (!is_array($this->attrs)) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$s = '';
|
$s = '';
|
||||||
$attrs = $this->attrs;
|
$attrs = $this->attrs;
|
||||||
foreach ($attrs as $key => $value) {
|
foreach ($attrs as $key => $value) {
|
||||||
@@ -782,7 +831,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
} elseif (is_array($value)) {
|
} elseif (is_array($value)) {
|
||||||
if (strncmp($key, 'data-', 5) === 0) {
|
if (str_starts_with($key, 'data-')) {
|
||||||
$value = Json::encode($value);
|
$value = Json::encode($value);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -812,8 +861,8 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab
|
|||||||
$q = str_contains($value, '"') ? "'" : '"';
|
$q = str_contains($value, '"') ? "'" : '"';
|
||||||
$s .= ' ' . $key . '=' . $q
|
$s .= ' ' . $key . '=' . $q
|
||||||
. str_replace(
|
. str_replace(
|
||||||
['&', $q, '<'],
|
['&', $q],
|
||||||
['&', $q === '"' ? '"' : ''', '<'],
|
['&', $q === '"' ? '"' : '''],
|
||||||
$value,
|
$value,
|
||||||
)
|
)
|
||||||
. (str_contains($value, '`') && strpbrk($value, ' <>"\'') === false ? ' ' : '')
|
. (str_contains($value, '`') && strpbrk($value, ' <>"\'') === false ? ' ' : '')
|
||||||
|
|||||||
+296
-195
@@ -1,15 +1,15 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function is_array, is_int, is_string;
|
||||||
|
use const IMG_BMP, IMG_FLIP_BOTH, IMG_FLIP_HORIZONTAL, IMG_FLIP_VERTICAL, IMG_GIF, IMG_JPG, IMG_PNG, IMG_WEBP, PATHINFO_EXTENSION;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,76 +22,70 @@ use Nette;
|
|||||||
* $image->send();
|
* $image->send();
|
||||||
* </code>
|
* </code>
|
||||||
*
|
*
|
||||||
* @method Image affine(array $affine, array $clip = null)
|
* @method Image affine(array<int, float|int> $affine, ?array{x: int, y: int, width: int, height: int} $clip = null)
|
||||||
* @method array affineMatrixConcat(array $m1, array $m2)
|
* @method void alphaBlending(bool $enable)
|
||||||
* @method array affineMatrixGet(int $type, mixed $options = null)
|
* @method void antialias(bool $enable)
|
||||||
* @method void alphaBlending(bool $on)
|
* @method void arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color)
|
||||||
* @method void antialias(bool $on)
|
* @method int colorAllocate(int $red, int $green, int $blue)
|
||||||
* @method void arc($x, $y, $w, $h, $start, $end, $color)
|
* @method int colorAllocateAlpha(int $red, int $green, int $blue, int $alpha)
|
||||||
* @method void char(int $font, $x, $y, string $char, $color)
|
* @method int colorAt(int $x, int $y)
|
||||||
* @method void charUp(int $font, $x, $y, string $char, $color)
|
* @method int colorClosest(int $red, int $green, int $blue)
|
||||||
* @method int colorAllocate($red, $green, $blue)
|
* @method int colorClosestAlpha(int $red, int $green, int $blue, int $alpha)
|
||||||
* @method int colorAllocateAlpha($red, $green, $blue, $alpha)
|
* @method int colorClosestHWB(int $red, int $green, int $blue)
|
||||||
* @method int colorAt($x, $y)
|
* @method void colorDeallocate(int $color)
|
||||||
* @method int colorClosest($red, $green, $blue)
|
* @method int colorExact(int $red, int $green, int $blue)
|
||||||
* @method int colorClosestAlpha($red, $green, $blue, $alpha)
|
* @method int colorExactAlpha(int $red, int $green, int $blue, int $alpha)
|
||||||
* @method int colorClosestHWB($red, $green, $blue)
|
|
||||||
* @method void colorDeallocate($color)
|
|
||||||
* @method int colorExact($red, $green, $blue)
|
|
||||||
* @method int colorExactAlpha($red, $green, $blue, $alpha)
|
|
||||||
* @method void colorMatch(Image $image2)
|
* @method void colorMatch(Image $image2)
|
||||||
* @method int colorResolve($red, $green, $blue)
|
* @method int colorResolve(int $red, int $green, int $blue)
|
||||||
* @method int colorResolveAlpha($red, $green, $blue, $alpha)
|
* @method int colorResolveAlpha(int $red, int $green, int $blue, int $alpha)
|
||||||
* @method void colorSet($index, $red, $green, $blue)
|
* @method void colorSet(int $index, int $red, int $green, int $blue, int $alpha = 0)
|
||||||
* @method array colorsForIndex($index)
|
* @method array{red: int, green: int, blue: int, alpha: int} colorsForIndex(int $color)
|
||||||
* @method int colorsTotal()
|
* @method int colorsTotal()
|
||||||
* @method int colorTransparent($color = null)
|
* @method int colorTransparent(?int $color = null)
|
||||||
* @method void convolution(array $matrix, float $div, float $offset)
|
* @method void convolution(array<int, array<int, float>> $matrix, float $div, float $offset)
|
||||||
* @method void copy(Image $src, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH)
|
* @method void copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH)
|
||||||
* @method void copyMerge(Image $src, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH, $opacity)
|
* @method void copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct)
|
||||||
* @method void copyMergeGray(Image $src, $dstX, $dstY, $srcX, $srcY, $srcW, $srcH, $opacity)
|
* @method void copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct)
|
||||||
* @method void copyResampled(Image $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH)
|
* @method void copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)
|
||||||
* @method void copyResized(Image $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH)
|
* @method void copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)
|
||||||
* @method Image cropAuto(int $mode = -1, float $threshold = .5, int $color = -1)
|
* @method Image cropAuto(int $mode = 0, float $threshold = .5, ?ImageColor $color = null)
|
||||||
* @method void ellipse($cx, $cy, $w, $h, $color)
|
* @method void ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color)
|
||||||
* @method void fill($x, $y, $color)
|
* @method void fill(int $x, int $y, ImageColor $color)
|
||||||
* @method void filledArc($cx, $cy, $w, $h, $s, $e, $color, $style)
|
* @method void filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style)
|
||||||
* @method void filledEllipse($cx, $cy, $w, $h, $color)
|
* @method void filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color)
|
||||||
* @method void filledPolygon(array $points, $numPoints, $color)
|
* @method void filledPolygon(array<int, int> $points, ImageColor $color)
|
||||||
* @method void filledRectangle($x1, $y1, $x2, $y2, $color)
|
* @method void filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)
|
||||||
* @method void fillToBorder($x, $y, $border, $color)
|
* @method void fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color)
|
||||||
* @method void filter($filtertype)
|
* @method void filter(int $filter, ...$args)
|
||||||
* @method void flip(int $mode)
|
* @method void flip(int $mode)
|
||||||
* @method array ftText($size, $angle, $x, $y, $col, string $fontFile, string $text, array $extrainfo = null)
|
* @method array<int, int> ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array<string, mixed> $options = [])
|
||||||
* @method void gammaCorrect(float $inputgamma, float $outputgamma)
|
* @method void gammaCorrect(float $inputgamma, float $outputgamma)
|
||||||
* @method array getClip()
|
* @method array{int, int, int, int} getClip()
|
||||||
* @method int interlace($interlace = null)
|
* @method int getInterpolation()
|
||||||
|
* @method int interlace(?bool $enable = null)
|
||||||
* @method bool isTrueColor()
|
* @method bool isTrueColor()
|
||||||
* @method void layerEffect($effect)
|
* @method void layerEffect(int $effect)
|
||||||
* @method void line($x1, $y1, $x2, $y2, $color)
|
* @method void line(int $x1, int $y1, int $x2, int $y2, ImageColor $color)
|
||||||
* @method void openPolygon(array $points, int $num_points, int $color)
|
* @method void openPolygon(array<int, int> $points, ImageColor $color)
|
||||||
* @method void paletteCopy(Image $source)
|
* @method void paletteCopy(Image $source)
|
||||||
* @method void paletteToTrueColor()
|
* @method void paletteToTrueColor()
|
||||||
* @method void polygon(array $points, $numPoints, $color)
|
* @method void polygon(array<int, int> $points, ImageColor $color)
|
||||||
* @method array psText(string $text, $font, $size, $color, $backgroundColor, $x, $y, $space = null, $tightness = null, float $angle = null, $antialiasSteps = null)
|
* @method void rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)
|
||||||
* @method void rectangle($x1, $y1, $x2, $y2, $col)
|
* @method mixed resolution(?int $resolutionX = null, ?int $resolutionY = null)
|
||||||
* @method mixed resolution(int $res_x = null, int $res_y = null)
|
* @method Image rotate(float $angle, ImageColor $backgroundColor)
|
||||||
* @method Image rotate(float $angle, $backgroundColor)
|
* @method void saveAlpha(bool $enable)
|
||||||
* @method void saveAlpha(bool $saveflag)
|
* @method Image scale(int $newWidth, int $newHeight = -1, int $mode = 3)
|
||||||
* @method Image scale(int $newWidth, int $newHeight = -1, int $mode = IMG_BILINEAR_FIXED)
|
|
||||||
* @method void setBrush(Image $brush)
|
* @method void setBrush(Image $brush)
|
||||||
* @method void setClip(int $x1, int $y1, int $x2, int $y2)
|
* @method void setClip(int $x1, int $y1, int $x2, int $y2)
|
||||||
* @method void setInterpolation(int $method = IMG_BILINEAR_FIXED)
|
* @method void setInterpolation(int $method = 3)
|
||||||
* @method void setPixel($x, $y, $color)
|
* @method void setPixel(int $x, int $y, ImageColor $color)
|
||||||
* @method void setStyle(array $style)
|
* @method void setStyle(array<int, int> $style)
|
||||||
* @method void setThickness($thickness)
|
* @method void setThickness(int $thickness)
|
||||||
* @method void setTile(Image $tile)
|
* @method void setTile(Image $tile)
|
||||||
* @method void string($font, $x, $y, string $s, $col)
|
* @method void trueColorToPalette(bool $dither, int $ncolors)
|
||||||
* @method void stringUp($font, $x, $y, string $s, $col)
|
* @method array<int, int> ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontfile, string $text, array<string, mixed> $options = [])
|
||||||
* @method void trueColorToPalette(bool $dither, $ncolors)
|
* @property-read positive-int $width
|
||||||
* @method array ttfText($size, $angle, $x, $y, $color, string $fontfile, string $text)
|
* @property-read positive-int $height
|
||||||
* @property-read int $width
|
|
||||||
* @property-read int $height
|
|
||||||
* @property-read \GdImage $imageResource
|
* @property-read \GdImage $imageResource
|
||||||
*/
|
*/
|
||||||
class Image
|
class Image
|
||||||
@@ -133,22 +127,25 @@ class Image
|
|||||||
|
|
||||||
/** image types */
|
/** image types */
|
||||||
public const
|
public const
|
||||||
JPEG = IMAGETYPE_JPEG,
|
JPEG = ImageType::JPEG,
|
||||||
PNG = IMAGETYPE_PNG,
|
PNG = ImageType::PNG,
|
||||||
GIF = IMAGETYPE_GIF,
|
GIF = ImageType::GIF,
|
||||||
WEBP = IMAGETYPE_WEBP,
|
WEBP = ImageType::WEBP,
|
||||||
AVIF = 19, // IMAGETYPE_AVIF,
|
AVIF = ImageType::AVIF,
|
||||||
BMP = IMAGETYPE_BMP;
|
BMP = ImageType::BMP;
|
||||||
|
|
||||||
public const EmptyGIF = "GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;";
|
public const EmptyGIF = "GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;";
|
||||||
|
|
||||||
private const Formats = [self::JPEG => 'jpeg', self::PNG => 'png', self::GIF => 'gif', self::WEBP => 'webp', self::AVIF => 'avif', self::BMP => 'bmp'];
|
private const Formats = [ImageType::JPEG => 'jpeg', ImageType::PNG => 'png', ImageType::GIF => 'gif', ImageType::WEBP => 'webp', ImageType::AVIF => 'avif', ImageType::BMP => 'bmp'];
|
||||||
|
private const Sentinel = "\0";
|
||||||
|
|
||||||
private \GdImage $image;
|
private \GdImage $image;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns RGB color (0..255) and transparency (0..127).
|
* Returns RGB color (0..255) and transparency (0..127).
|
||||||
|
* @deprecated use ImageColor::rgb()
|
||||||
|
* @return array{red: int, green: int, blue: int, alpha: int}
|
||||||
*/
|
*/
|
||||||
public static function rgb(int $red, int $green, int $blue, int $transparency = 0): array
|
public static function rgb(int $red, int $green, int $blue, int $transparency = 0): array
|
||||||
{
|
{
|
||||||
@@ -162,56 +159,64 @@ class Image
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads an image from a file and returns its type in $type.
|
* Reads an image from a file and returns its type in $type. If $warnings is passed, recoverable decoder
|
||||||
|
* warnings are returned in it instead of being raised as a PHP warning.
|
||||||
|
* @param-out ?string $warnings
|
||||||
* @throws Nette\NotSupportedException if gd extension is not loaded
|
* @throws Nette\NotSupportedException if gd extension is not loaded
|
||||||
* @throws UnknownImageFileException if file not found or file type is not known
|
* @throws UnknownImageFileException if file not found or file type is not known
|
||||||
*/
|
*/
|
||||||
public static function fromFile(string $file, ?int &$type = null): static
|
public static function fromFile(string $file, ?int &$type = null, ?string &$warnings = self::Sentinel): static
|
||||||
{
|
{
|
||||||
if (!extension_loaded('gd')) {
|
self::ensureExtension();
|
||||||
throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$type = self::detectTypeFromFile($file);
|
$type = self::detectTypeFromFile($file);
|
||||||
if (!$type) {
|
if (!$type) {
|
||||||
throw new UnknownImageFileException(is_file($file) ? "Unknown type of file '$file'." : "File '$file' not found.");
|
throw new UnknownImageFileException(is_file($file) ? "Unknown type of file '$file'." : "File '$file' not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return self::invokeSafe('imagecreatefrom' . self::Formats[$type], $file, "Unable to open file '$file'.", __METHOD__);
|
return self::invokeSafe('imagecreatefrom' . self::Formats[$type], $file, "Unable to open file '$file'.", __METHOD__, $warnings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads an image from a string and returns its type in $type.
|
* Reads an image from a string and returns its type in $type. If $warnings is passed, recoverable decoder
|
||||||
|
* warnings are returned in it instead of being raised as a PHP warning.
|
||||||
|
* @param-out ?string $warnings
|
||||||
* @throws Nette\NotSupportedException if gd extension is not loaded
|
* @throws Nette\NotSupportedException if gd extension is not loaded
|
||||||
* @throws ImageException
|
* @throws ImageException
|
||||||
*/
|
*/
|
||||||
public static function fromString(string $s, ?int &$type = null): static
|
public static function fromString(string $s, ?int &$type = null, ?string &$warnings = self::Sentinel): static
|
||||||
{
|
{
|
||||||
if (!extension_loaded('gd')) {
|
self::ensureExtension();
|
||||||
throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$type = self::detectTypeFromString($s);
|
$type = self::detectTypeFromString($s);
|
||||||
if (!$type) {
|
if (!$type) {
|
||||||
throw new UnknownImageFileException('Unknown type of image.');
|
throw new UnknownImageFileException('Unknown type of image.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return self::invokeSafe('imagecreatefromstring', $s, 'Unable to open image from string.', __METHOD__);
|
return self::invokeSafe('imagecreatefromstring', $s, 'Unable to open image from string.', __METHOD__, $warnings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static function invokeSafe(string $func, string $arg, string $message, string $callee): static
|
/** @param callable-string $func */
|
||||||
|
private static function invokeSafe(
|
||||||
|
string $func,
|
||||||
|
string $arg,
|
||||||
|
string $message,
|
||||||
|
string $callee,
|
||||||
|
?string &$warnings = self::Sentinel,
|
||||||
|
): static
|
||||||
{
|
{
|
||||||
$errors = [];
|
$errors = [];
|
||||||
$res = Callback::invokeSafe($func, [$arg], function (string $message) use (&$errors): void {
|
$res = Callback::invokeSafe($func, [$arg], function (string $message) use (&$errors): void {
|
||||||
$errors[] = $message;
|
$errors[] = $message;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$raiseWarning = $warnings === self::Sentinel;
|
||||||
|
$warnings = $errors ? implode(', ', $errors) : null;
|
||||||
|
|
||||||
if (!$res) {
|
if (!$res) {
|
||||||
throw new ImageException($message . ' Errors: ' . implode(', ', $errors));
|
throw new ImageException($message . ' Errors: ' . $warnings);
|
||||||
} elseif ($errors) {
|
} elseif ($errors && $raiseWarning) {
|
||||||
trigger_error($callee . '(): ' . implode(', ', $errors), E_USER_WARNING);
|
trigger_error($callee . '(): ' . $warnings, E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new static($res);
|
return new static($res);
|
||||||
@@ -220,53 +225,59 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new true color image of the given dimensions. The default color is black.
|
* Creates a new true color image of the given dimensions. The default color is black.
|
||||||
|
* @param positive-int $width
|
||||||
|
* @param positive-int $height
|
||||||
|
* @param ImageColor|array{red: int, green: int, blue: int, alpha?: int}|null $color
|
||||||
* @throws Nette\NotSupportedException if gd extension is not loaded
|
* @throws Nette\NotSupportedException if gd extension is not loaded
|
||||||
*/
|
*/
|
||||||
public static function fromBlank(int $width, int $height, ?array $color = null): static
|
public static function fromBlank(int $width, int $height, ImageColor|array|null $color = null): static
|
||||||
{
|
{
|
||||||
if (!extension_loaded('gd')) {
|
self::ensureExtension();
|
||||||
throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($width < 1 || $height < 1) {
|
if ($width < 1 || $height < 1) {
|
||||||
throw new Nette\InvalidArgumentException('Image width and height must be greater than zero.');
|
throw new Nette\InvalidArgumentException('Image width and height must be greater than zero.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$image = imagecreatetruecolor($width, $height);
|
$image = new static(imagecreatetruecolor($width, $height));
|
||||||
if ($color) {
|
if ($color) {
|
||||||
$color += ['alpha' => 0];
|
$image->alphaBlending(false);
|
||||||
$color = imagecolorresolvealpha($image, $color['red'], $color['green'], $color['blue'], $color['alpha']);
|
$image->filledRectangle(0, 0, $width - 1, $height - 1, self::normalizeColor($color));
|
||||||
imagealphablending($image, false);
|
$image->alphaBlending(true);
|
||||||
imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $color);
|
|
||||||
imagealphablending($image, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new static($image);
|
return $image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the type of image from file.
|
* Returns the type of image from file.
|
||||||
|
* @param-out ?int $width
|
||||||
|
* @param-out ?int $height
|
||||||
|
* @return ?ImageType::*
|
||||||
*/
|
*/
|
||||||
public static function detectTypeFromFile(string $file, &$width = null, &$height = null): ?int
|
public static function detectTypeFromFile(string $file, mixed &$width = null, mixed &$height = null): ?int
|
||||||
{
|
{
|
||||||
[$width, $height, $type] = @getimagesize($file); // @ - files smaller than 12 bytes causes read error
|
[$width, $height, $type] = Helpers::falseToNull(@getimagesize($file)); // @ - files smaller than 12 bytes causes read error
|
||||||
return isset(self::Formats[$type]) ? $type : null;
|
return $type && isset(self::Formats[$type]) ? $type : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the type of image from string.
|
* Returns the type of image from string.
|
||||||
|
* @param-out ?int $width
|
||||||
|
* @param-out ?int $height
|
||||||
|
* @return ?ImageType::*
|
||||||
*/
|
*/
|
||||||
public static function detectTypeFromString(string $s, &$width = null, &$height = null): ?int
|
public static function detectTypeFromString(string $s, mixed &$width = null, mixed &$height = null): ?int
|
||||||
{
|
{
|
||||||
[$width, $height, $type] = @getimagesizefromstring($s); // @ - strings smaller than 12 bytes causes read error
|
[$width, $height, $type] = Helpers::falseToNull(@getimagesizefromstring($s)); // @ - strings smaller than 12 bytes causes read error
|
||||||
return isset(self::Formats[$type]) ? $type : null;
|
return $type && isset(self::Formats[$type]) ? $type : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the file extension for the given `Image::XXX` constant.
|
* Returns the file extension for the given image type.
|
||||||
|
* @param ImageType::* $type
|
||||||
|
* @return value-of<self::Formats>
|
||||||
*/
|
*/
|
||||||
public static function typeToExtension(int $type): string
|
public static function typeToExtension(int $type): string
|
||||||
{
|
{
|
||||||
@@ -279,11 +290,12 @@ class Image
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the `Image::XXX` constant for given file extension.
|
* Returns the image type for given file extension.
|
||||||
|
* @return ImageType::*
|
||||||
*/
|
*/
|
||||||
public static function extensionToType(string $extension): int
|
public static function extensionToType(string $extension): int
|
||||||
{
|
{
|
||||||
$extensions = array_flip(self::Formats) + ['jpg' => self::JPEG];
|
$extensions = array_flip(self::Formats) + ['jpg' => ImageType::JPEG];
|
||||||
$extension = strtolower($extension);
|
$extension = strtolower($extension);
|
||||||
if (!isset($extensions[$extension])) {
|
if (!isset($extensions[$extension])) {
|
||||||
throw new Nette\InvalidArgumentException("Unsupported file extension '$extension'.");
|
throw new Nette\InvalidArgumentException("Unsupported file extension '$extension'.");
|
||||||
@@ -294,7 +306,8 @@ class Image
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the mime type for the given `Image::XXX` constant.
|
* Returns the mime type for the given image type.
|
||||||
|
* @param ImageType::* $type
|
||||||
*/
|
*/
|
||||||
public static function typeToMimeType(int $type): string
|
public static function typeToMimeType(int $type): string
|
||||||
{
|
{
|
||||||
@@ -302,6 +315,44 @@ class Image
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given image type is supported by the GD extension.
|
||||||
|
* @param ImageType::* $type
|
||||||
|
*/
|
||||||
|
public static function isTypeSupported(int $type): bool
|
||||||
|
{
|
||||||
|
self::ensureExtension();
|
||||||
|
return (bool) (imagetypes() & match ($type) {
|
||||||
|
ImageType::JPEG => IMG_JPG,
|
||||||
|
ImageType::PNG => IMG_PNG,
|
||||||
|
ImageType::GIF => IMG_GIF,
|
||||||
|
ImageType::WEBP => IMG_WEBP,
|
||||||
|
ImageType::AVIF => IMG_AVIF,
|
||||||
|
ImageType::BMP => IMG_BMP,
|
||||||
|
default => 0,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns list of image types supported by the GD extension.
|
||||||
|
* @return ImageType::*[]
|
||||||
|
*/
|
||||||
|
public static function getSupportedTypes(): array
|
||||||
|
{
|
||||||
|
self::ensureExtension();
|
||||||
|
$flag = imagetypes();
|
||||||
|
return array_filter([
|
||||||
|
$flag & IMG_GIF ? ImageType::GIF : null,
|
||||||
|
$flag & IMG_JPG ? ImageType::JPEG : null,
|
||||||
|
$flag & IMG_PNG ? ImageType::PNG : null,
|
||||||
|
$flag & IMG_WEBP ? ImageType::WEBP : null,
|
||||||
|
$flag & IMG_AVIF ? ImageType::AVIF : null,
|
||||||
|
$flag & IMG_BMP ? ImageType::BMP : null,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wraps GD image.
|
* Wraps GD image.
|
||||||
*/
|
*/
|
||||||
@@ -314,6 +365,7 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns image width.
|
* Returns image width.
|
||||||
|
* @return positive-int
|
||||||
*/
|
*/
|
||||||
public function getWidth(): int
|
public function getWidth(): int
|
||||||
{
|
{
|
||||||
@@ -323,6 +375,7 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns image height.
|
* Returns image height.
|
||||||
|
* @return positive-int
|
||||||
*/
|
*/
|
||||||
public function getHeight(): int
|
public function getHeight(): int
|
||||||
{
|
{
|
||||||
@@ -351,18 +404,22 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Scales an image. Width and height accept pixels or percent.
|
* Scales an image. Width and height accept pixels or percent.
|
||||||
* @param self::OrSmaller|self::OrBigger|self::Stretch|self::Cover|self::ShrinkOnly $mode
|
* @param int-mask-of<self::OrSmaller|self::OrBigger|self::Stretch|self::Cover|self::ShrinkOnly> $mode
|
||||||
*/
|
*/
|
||||||
public function resize(int|string|null $width, int|string|null $height, int $mode = self::OrSmaller): static
|
public function resize(int|string|null $width, int|string|null $height, int $mode = self::OrSmaller): static
|
||||||
{
|
{
|
||||||
if ($mode & self::Cover) {
|
if ($mode & self::Cover) {
|
||||||
|
if ($width === null || $height === null) {
|
||||||
|
throw new Nette\InvalidArgumentException('Both width and height must be set for Cover mode.');
|
||||||
|
}
|
||||||
|
|
||||||
return $this->resize($width, $height, self::OrBigger)->crop('50%', '50%', $width, $height);
|
return $this->resize($width, $height, self::OrBigger)->crop('50%', '50%', $width, $height);
|
||||||
}
|
}
|
||||||
|
|
||||||
[$newWidth, $newHeight] = static::calculateSize($this->getWidth(), $this->getHeight(), $width, $height, $mode);
|
[$newWidth, $newHeight] = static::calculateSize($this->getWidth(), $this->getHeight(), $width, $height, $mode);
|
||||||
|
|
||||||
if ($newWidth !== $this->getWidth() || $newHeight !== $this->getHeight()) { // resize
|
if ($newWidth !== $this->getWidth() || $newHeight !== $this->getHeight()) { // resize
|
||||||
$newImage = static::fromBlank($newWidth, $newHeight, self::rgb(0, 0, 0, 127))->getImageResource();
|
$newImage = static::fromBlank($newWidth, $newHeight, ImageColor::rgb(0, 0, 0, 0))->getImageResource();
|
||||||
imagecopyresampled(
|
imagecopyresampled(
|
||||||
$newImage,
|
$newImage,
|
||||||
$this->image,
|
$this->image,
|
||||||
@@ -388,13 +445,14 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates dimensions of resized image. Width and height accept pixels or percent.
|
* Calculates dimensions of resized image. Width and height accept pixels or percent.
|
||||||
* @param self::OrSmaller|self::OrBigger|self::Stretch|self::Cover|self::ShrinkOnly $mode
|
* @param int-mask-of<self::OrSmaller|self::OrBigger|self::Stretch|self::Cover|self::ShrinkOnly> $mode
|
||||||
|
* @return array{int<1, max>, int<1, max>}
|
||||||
*/
|
*/
|
||||||
public static function calculateSize(
|
public static function calculateSize(
|
||||||
int $srcWidth,
|
int $srcWidth,
|
||||||
int $srcHeight,
|
int $srcHeight,
|
||||||
$newWidth,
|
int|string|null $newWidth,
|
||||||
$newHeight,
|
int|string|null $newHeight,
|
||||||
int $mode = self::OrSmaller,
|
int $mode = self::OrSmaller,
|
||||||
): array
|
): array
|
||||||
{
|
{
|
||||||
@@ -438,19 +496,19 @@ class Image
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($mode & self::OrBigger) {
|
if ($mode & self::OrBigger) {
|
||||||
$scale = [max($scale)];
|
$scale = [max($scale ?: [1])];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode & self::ShrinkOnly) {
|
if ($mode & self::ShrinkOnly) {
|
||||||
$scale[] = 1;
|
$scale[] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scale = min($scale);
|
$scale = min($scale ?: [1]);
|
||||||
$newWidth = (int) round($srcWidth * $scale);
|
$newWidth = (int) round($srcWidth * $scale);
|
||||||
$newHeight = (int) round($srcHeight * $scale);
|
$newHeight = (int) round($srcHeight * $scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [max($newWidth, 1), max($newHeight, 1)];
|
return [max((int) $newWidth, 1), max((int) $newHeight, 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -465,7 +523,7 @@ class Image
|
|||||||
$this->image = imagecrop($this->image, $r);
|
$this->image = imagecrop($this->image, $r);
|
||||||
imagesavealpha($this->image, true);
|
imagesavealpha($this->image, true);
|
||||||
} else {
|
} else {
|
||||||
$newImage = static::fromBlank($r['width'], $r['height'], self::RGB(0, 0, 0, 127))->getImageResource();
|
$newImage = static::fromBlank(max(1, $r['width']), max(1, $r['height']), ImageColor::rgb(0, 0, 0, 0))->getImageResource();
|
||||||
imagecopy($newImage, $this->image, 0, 0, $r['x'], $r['y'], $r['width'], $r['height']);
|
imagecopy($newImage, $this->image, 0, 0, $r['x'], $r['y'], $r['width'], $r['height']);
|
||||||
$this->image = $newImage;
|
$this->image = $newImage;
|
||||||
}
|
}
|
||||||
@@ -476,6 +534,7 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates dimensions of cutout in image. Arguments accepts pixels or percent.
|
* Calculates dimensions of cutout in image. Arguments accepts pixels or percent.
|
||||||
|
* @return array{int, int, int, int}
|
||||||
*/
|
*/
|
||||||
public static function calculateCutout(
|
public static function calculateCutout(
|
||||||
int $srcWidth,
|
int $srcWidth,
|
||||||
@@ -486,21 +545,10 @@ class Image
|
|||||||
int|string $newHeight,
|
int|string $newHeight,
|
||||||
): array
|
): array
|
||||||
{
|
{
|
||||||
if (self::isPercent($newWidth)) {
|
$newWidth = (int) (self::isPercent($newWidth) ? round($srcWidth / 100 * $newWidth) : $newWidth);
|
||||||
$newWidth = (int) round($srcWidth / 100 * $newWidth);
|
$newHeight = (int) (self::isPercent($newHeight) ? round($srcHeight / 100 * $newHeight) : $newHeight);
|
||||||
}
|
$left = (int) (self::isPercent($left) ? round(($srcWidth - $newWidth) / 100 * $left) : $left);
|
||||||
|
$top = (int) (self::isPercent($top) ? round(($srcHeight - $newHeight) / 100 * $top) : $top);
|
||||||
if (self::isPercent($newHeight)) {
|
|
||||||
$newHeight = (int) round($srcHeight / 100 * $newHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self::isPercent($left)) {
|
|
||||||
$left = (int) round(($srcWidth - $newWidth) / 100 * $left);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self::isPercent($top)) {
|
|
||||||
$top = (int) round(($srcHeight - $newHeight) / 100 * $top);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($left < 0) {
|
if ($left < 0) {
|
||||||
$newWidth += $left;
|
$newWidth += $left;
|
||||||
@@ -534,7 +582,7 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts another image into this image. Left and top accepts pixels or percent.
|
* Puts another image into this image. Left and top accepts pixels or percent.
|
||||||
* @param int $opacity 0..100
|
* @param int<0, 100> $opacity 0..100
|
||||||
*/
|
*/
|
||||||
public function place(self $image, int|string $left = 0, int|string $top = 0, int $opacity = 100): static
|
public function place(self $image, int|string $left = 0, int|string $top = 0, int $opacity = 100): static
|
||||||
{
|
{
|
||||||
@@ -545,14 +593,8 @@ class Image
|
|||||||
|
|
||||||
$width = $image->getWidth();
|
$width = $image->getWidth();
|
||||||
$height = $image->getHeight();
|
$height = $image->getHeight();
|
||||||
|
$left = (int) (self::isPercent($left) ? round(($this->getWidth() - $width) / 100 * $left) : $left);
|
||||||
if (self::isPercent($left)) {
|
$top = (int) (self::isPercent($top) ? round(($this->getHeight() - $height) / 100 * $top) : $top);
|
||||||
$left = (int) round(($this->getWidth() - $width) / 100 * $left);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self::isPercent($top)) {
|
|
||||||
$top = (int) round(($this->getHeight() - $height) / 100 * $top);
|
|
||||||
}
|
|
||||||
|
|
||||||
$output = $input = $image->image;
|
$output = $input = $image->image;
|
||||||
if ($opacity < 100) {
|
if ($opacity < 100) {
|
||||||
@@ -565,7 +607,7 @@ class Image
|
|||||||
imagealphablending($output, false);
|
imagealphablending($output, false);
|
||||||
if (!$image->isTrueColor()) {
|
if (!$image->isTrueColor()) {
|
||||||
$input = $output;
|
$input = $output;
|
||||||
imagefilledrectangle($output, 0, 0, $width, $height, imagecolorallocatealpha($output, 0, 0, 0, 127));
|
imagefilledrectangle($output, 0, 0, $width, $height, (int) imagecolorallocatealpha($output, 0, 0, 0, 127));
|
||||||
imagecopy($output, $image->image, 0, 0, 0, 0, $width, $height);
|
imagecopy($output, $image->image, 0, 0, 0, 0, $width, $height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,8 +636,55 @@ class Image
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates the bounding box for a TrueType text. Returns keys left, top, width and height.
|
||||||
|
* @param array<string, mixed> $options
|
||||||
|
* @return array{left: int, top: int, width: int, height: int}
|
||||||
|
*/
|
||||||
|
public static function calculateTextBox(
|
||||||
|
string $text,
|
||||||
|
string $fontFile,
|
||||||
|
float $size,
|
||||||
|
float $angle = 0,
|
||||||
|
array $options = [],
|
||||||
|
): array
|
||||||
|
{
|
||||||
|
self::ensureExtension();
|
||||||
|
$box = imagettfbbox($size, $angle, $fontFile, $text, $options);
|
||||||
|
return [
|
||||||
|
'left' => $minX = min([$box[0], $box[2], $box[4], $box[6]]),
|
||||||
|
'top' => $minY = min([$box[1], $box[3], $box[5], $box[7]]),
|
||||||
|
'width' => max([$box[0], $box[2], $box[4], $box[6]]) - $minX + 1,
|
||||||
|
'height' => max([$box[1], $box[3], $box[5], $box[7]]) - $minY + 1,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a rectangle using top-left coordinates and dimensions instead of two corner coordinates.
|
||||||
|
*/
|
||||||
|
public function rectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void
|
||||||
|
{
|
||||||
|
if ($width !== 0 && $height !== 0) {
|
||||||
|
$this->rectangle($x, $y, $x + $width + ($width > 0 ? -1 : 1), $y + $height + ($height > 0 ? -1 : 1), $color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws a filled rectangle using top-left coordinates and dimensions instead of two corner coordinates.
|
||||||
|
*/
|
||||||
|
public function filledRectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void
|
||||||
|
{
|
||||||
|
if ($width !== 0 && $height !== 0) {
|
||||||
|
$this->filledRectangle($x, $y, $x + $width + ($width > 0 ? -1 : 1), $y + $height + ($height > 0 ? -1 : 1), $color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves image to the file. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9).
|
* Saves image to the file. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9).
|
||||||
|
* @param ?ImageType::* $type
|
||||||
* @throws ImageException
|
* @throws ImageException
|
||||||
*/
|
*/
|
||||||
public function save(string $file, ?int $quality = null, ?int $type = null): void
|
public function save(string $file, ?int $quality = null, ?int $type = null): void
|
||||||
@@ -607,8 +696,9 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Outputs image to string. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9).
|
* Outputs image to string. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9).
|
||||||
|
* @param ImageType::* $type
|
||||||
*/
|
*/
|
||||||
public function toString(int $type = self::JPEG, ?int $quality = null): string
|
public function toString(int $type = ImageType::JPEG, ?int $quality = null): string
|
||||||
{
|
{
|
||||||
return Helpers::capture(function () use ($type, $quality): void {
|
return Helpers::capture(function () use ($type, $quality): void {
|
||||||
$this->output($type, $quality);
|
$this->output($type, $quality);
|
||||||
@@ -627,9 +717,10 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Outputs image to browser. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9).
|
* Outputs image to browser. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9).
|
||||||
|
* @param ImageType::* $type
|
||||||
* @throws ImageException
|
* @throws ImageException
|
||||||
*/
|
*/
|
||||||
public function send(int $type = self::JPEG, ?int $quality = null): void
|
public function send(int $type = ImageType::JPEG, ?int $quality = null): void
|
||||||
{
|
{
|
||||||
header('Content-Type: ' . self::typeToMimeType($type));
|
header('Content-Type: ' . self::typeToMimeType($type));
|
||||||
$this->output($type, $quality);
|
$this->output($type, $quality);
|
||||||
@@ -638,51 +729,38 @@ class Image
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Outputs image to browser or file.
|
* Outputs image to browser or file.
|
||||||
|
* @param ImageType::* $type
|
||||||
* @throws ImageException
|
* @throws ImageException
|
||||||
*/
|
*/
|
||||||
private function output(int $type, ?int $quality, ?string $file = null): void
|
private function output(int $type, ?int $quality, ?string $file = null): void
|
||||||
{
|
{
|
||||||
switch ($type) {
|
[$defQuality, $min, $max] = match ($type) {
|
||||||
case self::JPEG:
|
ImageType::JPEG => [85, 0, 100],
|
||||||
$quality = $quality === null ? 85 : max(0, min(100, $quality));
|
ImageType::PNG => [9, 0, 9],
|
||||||
$success = @imagejpeg($this->image, $file, $quality); // @ is escalated to exception
|
ImageType::GIF => [null, null, null],
|
||||||
break;
|
ImageType::WEBP => [80, 0, 100],
|
||||||
|
ImageType::AVIF => [30, 0, 100],
|
||||||
|
ImageType::BMP => [null, null, null],
|
||||||
|
default => throw new Nette\InvalidArgumentException("Unsupported image type '$type'."),
|
||||||
|
};
|
||||||
|
|
||||||
case self::PNG:
|
$args = [$this->image, $file];
|
||||||
$quality = $quality === null ? 9 : max(0, min(9, $quality));
|
if ($defQuality !== null) {
|
||||||
$success = @imagepng($this->image, $file, $quality); // @ is escalated to exception
|
$args[] = $quality === null ? $defQuality : max($min, min($max, $quality));
|
||||||
break;
|
|
||||||
|
|
||||||
case self::GIF:
|
|
||||||
$success = @imagegif($this->image, $file); // @ is escalated to exception
|
|
||||||
break;
|
|
||||||
|
|
||||||
case self::WEBP:
|
|
||||||
$quality = $quality === null ? 80 : max(0, min(100, $quality));
|
|
||||||
$success = @imagewebp($this->image, $file, $quality); // @ is escalated to exception
|
|
||||||
break;
|
|
||||||
|
|
||||||
case self::AVIF:
|
|
||||||
$quality = $quality === null ? 30 : max(0, min(100, $quality));
|
|
||||||
$success = @imageavif($this->image, $file, $quality); // @ is escalated to exception
|
|
||||||
break;
|
|
||||||
|
|
||||||
case self::BMP:
|
|
||||||
$success = @imagebmp($this->image, $file); // @ is escalated to exception
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new Nette\InvalidArgumentException("Unsupported image type '$type'.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$success) {
|
Callback::invokeSafe('image' . self::Formats[$type], $args, function (string $message) use ($file): void {
|
||||||
throw new ImageException(Helpers::getLastError() ?: 'Unknown error');
|
if ($file !== null) {
|
||||||
|
@unlink($file);
|
||||||
}
|
}
|
||||||
|
throw new ImageException($message);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call to undefined method.
|
* Call to undefined method.
|
||||||
|
* @param mixed[] $args
|
||||||
* @throws Nette\MemberAccessException
|
* @throws Nette\MemberAccessException
|
||||||
*/
|
*/
|
||||||
public function __call(string $name, array $args): mixed
|
public function __call(string $name, array $args): mixed
|
||||||
@@ -696,20 +774,9 @@ class Image
|
|||||||
if ($value instanceof self) {
|
if ($value instanceof self) {
|
||||||
$args[$key] = $value->getImageResource();
|
$args[$key] = $value->getImageResource();
|
||||||
|
|
||||||
} elseif (is_array($value) && isset($value['red'])) { // rgb
|
} elseif ($value instanceof ImageColor || (is_array($value) && isset($value['red']))) {
|
||||||
$args[$key] = imagecolorallocatealpha(
|
/** @var ImageColor|array{red: int, green: int, blue: int, alpha?: int} $value */
|
||||||
$this->image,
|
$args[$key] = $this->resolveColor($value);
|
||||||
$value['red'],
|
|
||||||
$value['green'],
|
|
||||||
$value['blue'],
|
|
||||||
$value['alpha'],
|
|
||||||
) ?: imagecolorresolvealpha(
|
|
||||||
$this->image,
|
|
||||||
$value['red'],
|
|
||||||
$value['green'],
|
|
||||||
$value['blue'],
|
|
||||||
$value['alpha'],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -722,12 +789,13 @@ class Image
|
|||||||
|
|
||||||
public function __clone()
|
public function __clone()
|
||||||
{
|
{
|
||||||
ob_start(function () {});
|
ob_start(fn() => '');
|
||||||
imagepng($this->image, null, 0);
|
imagepng($this->image, null, 0);
|
||||||
$this->setImageResource(imagecreatefromstring(ob_get_clean()));
|
$this->setImageResource(imagecreatefromstring(ob_get_clean()) ?: throw new Nette\ShouldNotHappenException);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param-out int|float $num */
|
||||||
private static function isPercent(int|string &$num): bool
|
private static function isPercent(int|string &$num): bool
|
||||||
{
|
{
|
||||||
if (is_string($num) && str_ends_with($num, '%')) {
|
if (is_string($num) && str_ends_with($num, '%')) {
|
||||||
@@ -745,8 +813,41 @@ class Image
|
|||||||
/**
|
/**
|
||||||
* Prevents serialization.
|
* Prevents serialization.
|
||||||
*/
|
*/
|
||||||
public function __sleep(): array
|
public function __serialize(): array
|
||||||
{
|
{
|
||||||
throw new Nette\NotSupportedException('You cannot serialize or unserialize ' . self::class . ' instances.');
|
throw new Nette\NotSupportedException('You cannot serialize or unserialize ' . self::class . ' instances.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolves a color to a GD color index for the current image.
|
||||||
|
* @param ImageColor|array{red: int, green: int, blue: int, alpha?: int} $color
|
||||||
|
*/
|
||||||
|
public function resolveColor(ImageColor|array $color): int
|
||||||
|
{
|
||||||
|
$color = self::normalizeColor($color)->toRGBA();
|
||||||
|
return imagecolorallocatealpha($this->image, ...$color) ?: imagecolorresolvealpha($this->image, ...$color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** @param ImageColor|array{red: int, green: int, blue: int, alpha?: int} $color */
|
||||||
|
private static function normalizeColor(ImageColor|array $color): ImageColor
|
||||||
|
{
|
||||||
|
return $color instanceof ImageColor
|
||||||
|
? $color
|
||||||
|
: ImageColor::rgb(
|
||||||
|
$color['red'],
|
||||||
|
$color['green'],
|
||||||
|
$color['blue'],
|
||||||
|
(127 - ($color['alpha'] ?? 0)) / 127,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static function ensureExtension(): void
|
||||||
|
{
|
||||||
|
if (!extension_loaded('gd')) {
|
||||||
|
throw new Nette\NotSupportedException('PHP extension GD is not loaded.');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-8
@@ -1,15 +1,15 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use function is_int, json_decode, json_encode, json_last_error, json_last_error_msg;
|
||||||
|
use const JSON_BIGINT_AS_STRING, JSON_FORCE_OBJECT, JSON_HEX_AMP, JSON_HEX_APOS, JSON_HEX_QUOT, JSON_HEX_TAG, JSON_OBJECT_AS_ARRAY, JSON_PRESERVE_ZERO_FRACTION, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,8 +30,8 @@ final class Json
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts value to JSON format. Use $pretty for easier reading and clarity, $asciiSafe for ASCII output
|
* Converts value to JSON format. Use $pretty for formatted output, $asciiSafe for ASCII-only output,
|
||||||
* and $htmlSafe for HTML escaping, $forceObjects enforces the encoding of non-associateve arrays as objects.
|
* $htmlSafe for HTML-safe output, and $forceObjects to encode non-associative arrays as objects.
|
||||||
* @throws JsonException
|
* @throws JsonException
|
||||||
*/
|
*/
|
||||||
public static function encode(
|
public static function encode(
|
||||||
@@ -51,8 +51,7 @@ final class Json
|
|||||||
| ($htmlSafe ? JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_TAG : 0);
|
| ($htmlSafe ? JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_TAG : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
$flags |= JSON_UNESCAPED_SLASHES
|
$flags |= JSON_UNESCAPED_SLASHES | JSON_PRESERVE_ZERO_FRACTION;
|
||||||
| (defined('JSON_PRESERVE_ZERO_FRACTION') ? JSON_PRESERVE_ZERO_FRACTION : 0); // since PHP 5.6.6 & PECL JSON-C 1.3.7
|
|
||||||
|
|
||||||
$json = json_encode($value, $flags);
|
$json = json_encode($value, $flags);
|
||||||
if ($error = json_last_error()) {
|
if ($error = json_last_error()) {
|
||||||
@@ -64,7 +63,7 @@ final class Json
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses JSON to PHP value. The $forceArrays enforces the decoding of objects as arrays.
|
* Decodes a JSON string to a PHP value. Use $forceArrays to decode objects as arrays.
|
||||||
* @throws JsonException
|
* @throws JsonException
|
||||||
*/
|
*/
|
||||||
public static function decode(string $json, bool|int $forceArrays = false): mixed
|
public static function decode(string $json, bool|int $forceArrays = false): mixed
|
||||||
|
|||||||
+4
-4
@@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
use Nette\MemberAccessException;
|
use Nette\MemberAccessException;
|
||||||
|
use function array_filter, array_merge, array_pop, array_unique, get_class_methods, get_parent_class, implode, is_a, levenshtein, method_exists, preg_match_all, preg_replace, strlen, ucfirst;
|
||||||
|
use const PREG_SET_ORDER, SORT_REGULAR;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -220,7 +220,7 @@ final class ObjectHelpers
|
|||||||
if ($rp->isPublic() && !$rp->isStatic()) {
|
if ($rp->isPublic() && !$rp->isStatic()) {
|
||||||
$prop = $name >= 'onA' && $name < 'on_' ? 'event' : true;
|
$prop = $name >= 'onA' && $name < 'on_' ? 'event' : true;
|
||||||
}
|
}
|
||||||
} catch (\ReflectionException $e) {
|
} catch (\ReflectionException) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+28
-49
@@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
@@ -17,32 +15,34 @@ use Nette;
|
|||||||
*
|
*
|
||||||
* @property int $page
|
* @property int $page
|
||||||
* @property-read int $firstPage
|
* @property-read int $firstPage
|
||||||
* @property-read int|null $lastPage
|
* @property-read ?int $lastPage
|
||||||
* @property-read int $firstItemOnPage
|
* @property-read int<0,max> $firstItemOnPage
|
||||||
* @property-read int $lastItemOnPage
|
* @property-read int<0,max> $lastItemOnPage
|
||||||
* @property int $base
|
* @property int $base
|
||||||
* @property-read bool $first
|
* @property-read bool $first
|
||||||
* @property-read bool $last
|
* @property-read bool $last
|
||||||
* @property-read int|null $pageCount
|
* @property-read ?int<0,max> $pageCount
|
||||||
* @property int $itemsPerPage
|
* @property positive-int $itemsPerPage
|
||||||
* @property int|null $itemCount
|
* @property ?int<0,max> $itemCount
|
||||||
* @property-read int $offset
|
* @property-read int<0,max> $offset
|
||||||
* @property-read int|null $countdownOffset
|
* @property-read ?int<0,max> $countdownOffset
|
||||||
* @property-read int $length
|
* @property-read int<0,max> $length
|
||||||
*/
|
*/
|
||||||
class Paginator
|
class Paginator
|
||||||
{
|
{
|
||||||
use Nette\SmartObject;
|
use Nette\SmartObject;
|
||||||
|
|
||||||
private int $base = 1;
|
private int $base = 1;
|
||||||
|
|
||||||
|
/** @var positive-int */
|
||||||
private int $itemsPerPage = 1;
|
private int $itemsPerPage = 1;
|
||||||
|
|
||||||
private int $page = 1;
|
private int $page = 1;
|
||||||
|
|
||||||
|
/** @var ?int<0, max> */
|
||||||
private ?int $itemCount = null;
|
private ?int $itemCount = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets current page number.
|
|
||||||
*/
|
|
||||||
public function setPage(int $page): static
|
public function setPage(int $page): static
|
||||||
{
|
{
|
||||||
$this->page = $page;
|
$this->page = $page;
|
||||||
@@ -50,27 +50,18 @@ class Paginator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns current page number.
|
|
||||||
*/
|
|
||||||
public function getPage(): int
|
public function getPage(): int
|
||||||
{
|
{
|
||||||
return $this->base + $this->getPageIndex();
|
return $this->base + $this->getPageIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns first page number.
|
|
||||||
*/
|
|
||||||
public function getFirstPage(): int
|
public function getFirstPage(): int
|
||||||
{
|
{
|
||||||
return $this->base;
|
return $this->base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns last page number.
|
|
||||||
*/
|
|
||||||
public function getLastPage(): ?int
|
public function getLastPage(): ?int
|
||||||
{
|
{
|
||||||
return $this->itemCount === null
|
return $this->itemCount === null
|
||||||
@@ -80,7 +71,8 @@ class Paginator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sequence number of the first element on the page
|
* Returns the 1-based index of the first item on the current page, or 0 if the page is empty.
|
||||||
|
* @return int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getFirstItemOnPage(): int
|
public function getFirstItemOnPage(): int
|
||||||
{
|
{
|
||||||
@@ -91,7 +83,8 @@ class Paginator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the sequence number of the last element on the page
|
* Returns the 1-based index of the last item on the current page.
|
||||||
|
* @return int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getLastItemOnPage(): int
|
public function getLastItemOnPage(): int
|
||||||
{
|
{
|
||||||
@@ -99,9 +92,6 @@ class Paginator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets first page (base) number.
|
|
||||||
*/
|
|
||||||
public function setBase(int $base): static
|
public function setBase(int $base): static
|
||||||
{
|
{
|
||||||
$this->base = $base;
|
$this->base = $base;
|
||||||
@@ -109,9 +99,6 @@ class Paginator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns first page (base) number.
|
|
||||||
*/
|
|
||||||
public function getBase(): int
|
public function getBase(): int
|
||||||
{
|
{
|
||||||
return $this->base;
|
return $this->base;
|
||||||
@@ -120,6 +107,7 @@ class Paginator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns zero-based page number.
|
* Returns zero-based page number.
|
||||||
|
* @return int<0, max>
|
||||||
*/
|
*/
|
||||||
protected function getPageIndex(): int
|
protected function getPageIndex(): int
|
||||||
{
|
{
|
||||||
@@ -130,18 +118,12 @@ class Paginator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the current page the first one?
|
|
||||||
*/
|
|
||||||
public function isFirst(): bool
|
public function isFirst(): bool
|
||||||
{
|
{
|
||||||
return $this->getPageIndex() === 0;
|
return $this->getPageIndex() === 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the current page the last one?
|
|
||||||
*/
|
|
||||||
public function isLast(): bool
|
public function isLast(): bool
|
||||||
{
|
{
|
||||||
return $this->itemCount === null
|
return $this->itemCount === null
|
||||||
@@ -151,19 +133,16 @@ class Paginator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the total number of pages.
|
* @return ?int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getPageCount(): ?int
|
public function getPageCount(): ?int
|
||||||
{
|
{
|
||||||
return $this->itemCount === null
|
return $this->itemCount === null
|
||||||
? null
|
? null
|
||||||
: (int) ceil($this->itemCount / $this->itemsPerPage);
|
: max(0, (int) ceil($this->itemCount / $this->itemsPerPage));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the number of items to display on a single page.
|
|
||||||
*/
|
|
||||||
public function setItemsPerPage(int $itemsPerPage): static
|
public function setItemsPerPage(int $itemsPerPage): static
|
||||||
{
|
{
|
||||||
$this->itemsPerPage = max(1, $itemsPerPage);
|
$this->itemsPerPage = max(1, $itemsPerPage);
|
||||||
@@ -172,7 +151,7 @@ class Paginator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of items to display on a single page.
|
* @return positive-int
|
||||||
*/
|
*/
|
||||||
public function getItemsPerPage(): int
|
public function getItemsPerPage(): int
|
||||||
{
|
{
|
||||||
@@ -180,9 +159,6 @@ class Paginator
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the total number of items.
|
|
||||||
*/
|
|
||||||
public function setItemCount(?int $itemCount = null): static
|
public function setItemCount(?int $itemCount = null): static
|
||||||
{
|
{
|
||||||
$this->itemCount = $itemCount === null ? null : max(0, $itemCount);
|
$this->itemCount = $itemCount === null ? null : max(0, $itemCount);
|
||||||
@@ -191,7 +167,7 @@ class Paginator
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the total number of items.
|
* @return ?int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getItemCount(): ?int
|
public function getItemCount(): ?int
|
||||||
{
|
{
|
||||||
@@ -201,6 +177,7 @@ class Paginator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the absolute index of the first item on current page.
|
* Returns the absolute index of the first item on current page.
|
||||||
|
* @return int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getOffset(): int
|
public function getOffset(): int
|
||||||
{
|
{
|
||||||
@@ -210,6 +187,7 @@ class Paginator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the absolute index of the first item on current page in countdown paging.
|
* Returns the absolute index of the first item on current page in countdown paging.
|
||||||
|
* @return ?int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getCountdownOffset(): ?int
|
public function getCountdownOffset(): ?int
|
||||||
{
|
{
|
||||||
@@ -221,11 +199,12 @@ class Paginator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of items on current page.
|
* Returns the number of items on current page.
|
||||||
|
* @return int<0, max>
|
||||||
*/
|
*/
|
||||||
public function getLength(): int
|
public function getLength(): int
|
||||||
{
|
{
|
||||||
return $this->itemCount === null
|
return $this->itemCount === null
|
||||||
? $this->itemsPerPage
|
? $this->itemsPerPage
|
||||||
: min($this->itemsPerPage, $this->itemCount - $this->getPageIndex() * $this->itemsPerPage);
|
: max(0, min($this->itemsPerPage, $this->itemCount - $this->getPageIndex() * $this->itemsPerPage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-3
@@ -1,15 +1,16 @@
|
|||||||
<?php
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This file is part of the Nette Framework (https://nette.org)
|
* This file is part of the Nette Framework (https://nette.org)
|
||||||
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
* Copyright (c) 2004 David Grudl (https://davidgrudl.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Nette\Utils;
|
namespace Nette\Utils;
|
||||||
|
|
||||||
use Nette;
|
use Nette;
|
||||||
|
use Random\Randomizer;
|
||||||
|
use function strlen;
|
||||||
|
use const PHP_VERSION_ID;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,6 +38,8 @@ final class Random
|
|||||||
throw new Nette\InvalidArgumentException('Length must be greater than zero.');
|
throw new Nette\InvalidArgumentException('Length must be greater than zero.');
|
||||||
} elseif ($chLen < 2) {
|
} elseif ($chLen < 2) {
|
||||||
throw new Nette\InvalidArgumentException('Character list must contain at least two chars.');
|
throw new Nette\InvalidArgumentException('Character list must contain at least two chars.');
|
||||||
|
} elseif (PHP_VERSION_ID >= 80300) {
|
||||||
|
return (new Randomizer)->getBytesFromString($charlist, $length);
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = '';
|
$res = '';
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user