mirror of
https://github.com/pestphp/pest.git
synced 2026-03-05 23:37:22 +01:00
chore: bumps dependencies
This commit is contained in:
@ -19,16 +19,16 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2.0",
|
"php": "^8.2.0",
|
||||||
"brianium/paratest": "^7.7.0",
|
"brianium/paratest": "^7.7.0",
|
||||||
"nunomaduro/collision": "^8.6.1",
|
"nunomaduro/collision": "^8.7.0",
|
||||||
"nunomaduro/termwind": "^2.3.0",
|
"nunomaduro/termwind": "^2.3.0",
|
||||||
"pestphp/pest-plugin": "^3.0.0",
|
"pestphp/pest-plugin": "^3.0.0",
|
||||||
"pestphp/pest-plugin-arch": "^3.0.0",
|
"pestphp/pest-plugin-arch": "^3.0.0",
|
||||||
"pestphp/pest-plugin-mutate": "^3.0.5",
|
"pestphp/pest-plugin-mutate": "^3.0.5",
|
||||||
"phpunit/phpunit": "^11.5.6"
|
"phpunit/phpunit": "^11.5.15"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"filp/whoops": "<2.16.0",
|
"filp/whoops": "<2.16.0",
|
||||||
"phpunit/phpunit": ">11.5.6",
|
"phpunit/phpunit": ">11.5.15",
|
||||||
"sebastian/exporter": "<6.0.0",
|
"sebastian/exporter": "<6.0.0",
|
||||||
"webmozart/assert": "<1.11.0"
|
"webmozart/assert": "<1.11.0"
|
||||||
},
|
},
|
||||||
@ -53,9 +53,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"pestphp/pest-dev-tools": "^3.3.0",
|
"pestphp/pest-dev-tools": "^3.4.0",
|
||||||
"pestphp/pest-plugin-type-coverage": "^3.2.3",
|
"pestphp/pest-plugin-type-coverage": "^3.5.0",
|
||||||
"symfony/process": "^7.2.0"
|
"symfony/process": "^7.2.5"
|
||||||
},
|
},
|
||||||
"minimum-stability": "dev",
|
"minimum-stability": "dev",
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
|
|||||||
199
phpstan-baseline.neon
Normal file
199
phpstan-baseline.neon
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
parameters:
|
||||||
|
ignoreErrors:
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#1 of callable callable\(Pest\\Expectation\<string\|null\>\)\: Pest\\Arch\\Contracts\\ArchExpectation expects Pest\\Expectation\<string\|null\>, Pest\\Expectation\<string\|null\> given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/ArchPresets/AbstractPreset.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Trait Pest\\Concerns\\Expectable is used zero times and is not analysed\.$#'
|
||||||
|
identifier: trait.unused
|
||||||
|
count: 1
|
||||||
|
path: src/Concerns/Expectable.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Trait Pest\\Concerns\\Logging\\WritesToConsole is used zero times and is not analysed\.$#'
|
||||||
|
identifier: trait.unused
|
||||||
|
count: 1
|
||||||
|
path: src/Concerns/Logging/WritesToConsole.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Trait Pest\\Concerns\\Testable is used zero times and is not analysed\.$#'
|
||||||
|
identifier: trait.unused
|
||||||
|
count: 1
|
||||||
|
path: src/Concerns/Testable.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Loose comparison using \!\= between \(Closure\|null\) and false will always evaluate to false\.$#'
|
||||||
|
identifier: notEqual.alwaysFalse
|
||||||
|
count: 1
|
||||||
|
path: src/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Method Pest\\Expectation\:\:and\(\) should return Pest\\Expectation\<TAndValue\> but returns \(Pest\\Expectation&TAndValue\)\|Pest\\Expectation\<TAndValue of mixed\>\.$#'
|
||||||
|
identifier: return.type
|
||||||
|
count: 1
|
||||||
|
path: src/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^PHPDoc tag @property for property Pest\\Expectation\:\:\$each contains generic class Pest\\Expectations\\EachExpectation but does not specify its types\: TValue$#'
|
||||||
|
identifier: missingType.generics
|
||||||
|
count: 1
|
||||||
|
path: src/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^PHPDoc tag @property for property Pest\\Expectation\:\:\$not contains generic class Pest\\Expectations\\OppositeExpectation but does not specify its types\: TValue$#'
|
||||||
|
identifier: missingType.generics
|
||||||
|
count: 1
|
||||||
|
path: src/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#2 \$newScope of method Closure\:\:bindTo\(\) expects ''static''\|class\-string\|object\|null, string given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Function expect\(\) should return Pest\\Expectation\<TValue\|null\> but returns Pest\\Expectation\<TValue\|null\>\.$#'
|
||||||
|
identifier: return.type
|
||||||
|
count: 1
|
||||||
|
path: src/Functions.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#1 \$argv of method PHPUnit\\TextUI\\Application\:\:run\(\) expects list\<string\>, array\<int, string\> given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Kernel.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Call to an undefined method object&TValue of mixed\:\:__toString\(\)\.$#'
|
||||||
|
identifier: method.notFound
|
||||||
|
count: 1
|
||||||
|
path: src/Mixins/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Call to an undefined method object&TValue of mixed\:\:toArray\(\)\.$#'
|
||||||
|
identifier: method.notFound
|
||||||
|
count: 4
|
||||||
|
path: src/Mixins/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Call to an undefined method object&TValue of mixed\:\:toSnapshot\(\)\.$#'
|
||||||
|
identifier: method.notFound
|
||||||
|
count: 1
|
||||||
|
path: src/Mixins/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Call to an undefined method object&TValue of mixed\:\:toString\(\)\.$#'
|
||||||
|
identifier: method.notFound
|
||||||
|
count: 1
|
||||||
|
path: src/Mixins/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Call to static method PHPUnit\\Framework\\Assert\:\:assertTrue\(\) with true will always evaluate to true\.$#'
|
||||||
|
identifier: staticMethod.alreadyNarrowedType
|
||||||
|
count: 2
|
||||||
|
path: src/Mixins/Expectation.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^PHPDoc tag @var with type callable\(\)\: bool is not subtype of native type Closure\|null\.$#'
|
||||||
|
identifier: varTag.nativeType
|
||||||
|
count: 1
|
||||||
|
path: src/PendingCalls/TestCall.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#1 \$argv of class Symfony\\Component\\Console\\Input\\ArgvInput constructor expects list\<string\>\|null, array\<int, string\> given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#13 \$testRunnerTriggeredDeprecationEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\TestRunner\\DeprecationTriggered\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#14 \$testRunnerTriggeredWarningEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\TestRunner\\WarningTriggered\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#15 \$errors of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#16 \$deprecations of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#17 \$notices of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#18 \$warnings of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#19 \$phpDeprecations of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#20 \$phpNotices of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#21 \$phpWarnings of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\TestRunner\\TestResult\\Issues\\Issue\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#4 \$testErroredEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\Test\\AfterLastTestMethodErrored\|PHPUnit\\Event\\Test\\BeforeFirstTestMethodErrored\|PHPUnit\\Event\\Test\\Errored\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#5 \$testFailedEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\Test\\Failed\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#7 \$testSuiteSkippedEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\TestSuite\\Skipped\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#8 \$testSkippedEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\Test\\Skipped\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Parameter \#9 \$testMarkedIncompleteEvents of class PHPUnit\\TestRunner\\TestResult\\TestResult constructor expects list\<PHPUnit\\Event\\Test\\MarkedIncomplete\>, array given\.$#'
|
||||||
|
identifier: argument.type
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: '#^Property Pest\\Plugins\\Parallel\\Paratest\\WrapperRunner\:\:\$pending \(list\<non\-empty\-string\>\) does not accept array\<int, non\-empty\-string\>\.$#'
|
||||||
|
identifier: assign.propertyType
|
||||||
|
count: 1
|
||||||
|
path: src/Plugins/Parallel/Paratest/WrapperRunner.php
|
||||||
@ -1,14 +1,12 @@
|
|||||||
includes:
|
includes:
|
||||||
- vendor/phpstan/phpstan-strict-rules/rules.neon
|
- phpstan-baseline.neon
|
||||||
- vendor/thecodingmachine/phpstan-strict-rules/phpstan-strict-rules.neon
|
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
level: max
|
level: 7
|
||||||
paths:
|
paths:
|
||||||
- src
|
- src
|
||||||
|
|
||||||
checkMissingIterableValueType: true
|
reportUnmatchedIgnoredErrors: false
|
||||||
reportUnmatchedIgnoredErrors: true
|
|
||||||
|
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
- "#type mixed is not subtype of native#"
|
- "#type mixed is not subtype of native#"
|
||||||
|
|||||||
@ -155,7 +155,7 @@ final class TestCaseMethodFactory
|
|||||||
assert($testCase instanceof TestCaseFactory);
|
assert($testCase instanceof TestCaseFactory);
|
||||||
$method = $this;
|
$method = $this;
|
||||||
|
|
||||||
return function (...$arguments) use ($testCase, $method, $closure): mixed { // @phpstan-ignore-line
|
return function (...$arguments) use ($testCase, $method, $closure): mixed {
|
||||||
/* @var TestCase $this */
|
/* @var TestCase $this */
|
||||||
$testCase->proxies->proxy($this);
|
$testCase->proxies->proxy($this);
|
||||||
$method->proxies->proxy($this);
|
$method->proxies->proxy($this);
|
||||||
|
|||||||
@ -183,7 +183,6 @@ final class Expectation
|
|||||||
{
|
{
|
||||||
foreach ($needles as $needle) {
|
foreach ($needles as $needle) {
|
||||||
if (is_string($this->value)) {
|
if (is_string($this->value)) {
|
||||||
// @phpstan-ignore-next-line
|
|
||||||
Assert::assertStringContainsString((string) $needle, $this->value);
|
Assert::assertStringContainsString((string) $needle, $this->value);
|
||||||
} else {
|
} else {
|
||||||
if (! is_iterable($this->value)) {
|
if (! is_iterable($this->value)) {
|
||||||
|
|||||||
@ -46,7 +46,7 @@ final readonly class Panic
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$output = Container::getInstance()->get(OutputInterface::class);
|
$output = Container::getInstance()->get(OutputInterface::class);
|
||||||
} catch (Throwable) { // @phpstan-ignore-line
|
} catch (Throwable) {
|
||||||
$output = new ConsoleOutput;
|
$output = new ConsoleOutput;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -78,7 +78,7 @@ final class DescribeCall
|
|||||||
$this->currentBeforeEachCall->describing[] = $this->description;
|
$this->currentBeforeEachCall->describing[] = $this->description;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->currentBeforeEachCall->{$name}(...$arguments); // @phpstan-ignore-line
|
$this->currentBeforeEachCall->{$name}(...$arguments);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -224,7 +224,7 @@ final class TestCall // @phpstan-ignore-line
|
|||||||
*/
|
*/
|
||||||
public function only(): self
|
public function only(): self
|
||||||
{
|
{
|
||||||
Only::enable($this, ...func_get_args()); // @phpstan-ignore-line
|
Only::enable($this, ...func_get_args());
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,7 +71,7 @@ final class DatasetsRepository
|
|||||||
*
|
*
|
||||||
* @throws ShouldNotHappen
|
* @throws ShouldNotHappen
|
||||||
*/
|
*/
|
||||||
public static function get(string $filename, string $description): Closure|array
|
public static function get(string $filename, string $description): Closure|array // @phpstan-ignore-line
|
||||||
{
|
{
|
||||||
$dataset = self::$withs[$filename.self::SEPARATOR.$description];
|
$dataset = self::$withs[$filename.self::SEPARATOR.$description];
|
||||||
|
|
||||||
@ -110,7 +110,6 @@ final class DatasetsRepository
|
|||||||
foreach ($datasetCombination as $datasetCombinationElement) {
|
foreach ($datasetCombination as $datasetCombinationElement) {
|
||||||
$partialDescriptions[] = $datasetCombinationElement['label'];
|
$partialDescriptions[] = $datasetCombinationElement['label'];
|
||||||
|
|
||||||
// @phpstan-ignore-next-line
|
|
||||||
$values = array_merge($values, $datasetCombinationElement['values']);
|
$values = array_merge($values, $datasetCombinationElement['values']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,7 +220,6 @@ final class DatasetsRepository
|
|||||||
$result = $tmp;
|
$result = $tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @phpstan-ignore-next-line
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,6 @@ final class Closure
|
|||||||
/**
|
/**
|
||||||
* Binds the given closure to the given "this".
|
* Binds the given closure to the given "this".
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @throws ShouldNotHappen
|
* @throws ShouldNotHappen
|
||||||
*/
|
*/
|
||||||
public static function bind(?BaseClosure $closure, ?object $newThis, object|string|null $newScope = 'static'): BaseClosure
|
public static function bind(?BaseClosure $closure, ?object $newThis, object|string|null $newScope = 'static'): BaseClosure
|
||||||
@ -24,6 +23,7 @@ final class Closure
|
|||||||
throw ShouldNotHappen::fromMessage('Could not bind null closure.');
|
throw ShouldNotHappen::fromMessage('Could not bind null closure.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @phpstan-ignore-next-line
|
||||||
$closure = BaseClosure::bind($closure, $newThis, $newScope);
|
$closure = BaseClosure::bind($closure, $newThis, $newScope);
|
||||||
|
|
||||||
if (! $closure instanceof \Closure) {
|
if (! $closure instanceof \Closure) {
|
||||||
|
|||||||
@ -66,6 +66,7 @@ final readonly class Exporter
|
|||||||
|
|
||||||
$result[] = $context->contains($data[$key]) !== false
|
$result[] = $context->contains($data[$key]) !== false
|
||||||
? '*RECURSION*'
|
? '*RECURSION*'
|
||||||
|
// @phpstan-ignore-next-line
|
||||||
: sprintf('[%s]', $this->shortenedRecursiveExport($data[$key], $context));
|
: sprintf('[%s]', $this->shortenedRecursiveExport($data[$key], $context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,14 +50,13 @@ final class HigherOrderMessage
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->hasHigherOrderCallable()) {
|
if ($this->hasHigherOrderCallable()) {
|
||||||
/* @phpstan-ignore-next-line */
|
|
||||||
return (new HigherOrderCallables($target))->{$this->name}(...$this->arguments);
|
return (new HigherOrderCallables($target))->{$this->name}(...$this->arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return is_array($this->arguments)
|
return is_array($this->arguments)
|
||||||
? Reflection::call($target, $this->name, $this->arguments)
|
? Reflection::call($target, $this->name, $this->arguments)
|
||||||
: $target->{$this->name}; /* @phpstan-ignore-line */
|
: $target->{$this->name};
|
||||||
} catch (Throwable $throwable) {
|
} catch (Throwable $throwable) {
|
||||||
Reflection::setPropertyValue($throwable, 'file', $this->filename);
|
Reflection::setPropertyValue($throwable, 'file', $this->filename);
|
||||||
Reflection::setPropertyValue($throwable, 'line', $this->line);
|
Reflection::setPropertyValue($throwable, 'line', $this->line);
|
||||||
@ -65,7 +64,6 @@ final class HigherOrderMessage
|
|||||||
if ($throwable->getMessage() === $this->getUndefinedMethodMessage($target, $this->name)) {
|
if ($throwable->getMessage() === $this->getUndefinedMethodMessage($target, $this->name)) {
|
||||||
/** @var ReflectionClass<TValue> $reflection */
|
/** @var ReflectionClass<TValue> $reflection */
|
||||||
$reflection = new ReflectionClass($target);
|
$reflection = new ReflectionClass($target);
|
||||||
/* @phpstan-ignore-next-line */
|
|
||||||
$reflection = $reflection->getParentClass() ?: $reflection;
|
$reflection = $reflection->getParentClass() ?: $reflection;
|
||||||
Reflection::setPropertyValue($throwable, 'message', sprintf('Call to undefined method %s::%s()', $reflection->getName(), $this->name));
|
Reflection::setPropertyValue($throwable, 'message', sprintf('Call to undefined method %s::%s()', $reflection->getName(), $this->name));
|
||||||
}
|
}
|
||||||
@ -96,10 +94,6 @@ final class HigherOrderMessage
|
|||||||
|
|
||||||
private function getUndefinedMethodMessage(object $target, string $methodName): string
|
private function getUndefinedMethodMessage(object $target, string $methodName): string
|
||||||
{
|
{
|
||||||
if (\PHP_MAJOR_VERSION >= 8) {
|
return sprintf(self::UNDEFINED_METHOD, sprintf('%s::%s()', $target::class, $methodName));
|
||||||
return sprintf(self::UNDEFINED_METHOD, sprintf('%s::%s()', $target::class, $methodName));
|
|
||||||
}
|
|
||||||
|
|
||||||
return sprintf(self::UNDEFINED_METHOD, $methodName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,7 +40,6 @@ final class HigherOrderMessageCollection
|
|||||||
public function chain(object $target): void
|
public function chain(object $target): void
|
||||||
{
|
{
|
||||||
foreach ($this->messages as $message) {
|
foreach ($this->messages as $message) {
|
||||||
// @phpstan-ignore-next-line
|
|
||||||
$target = $message->call($target) ?? $target;
|
$target = $message->call($target) ?? $target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ final class HigherOrderTapProxy
|
|||||||
*/
|
*/
|
||||||
public function __set(string $property, mixed $value): void
|
public function __set(string $property, mixed $value): void
|
||||||
{
|
{
|
||||||
$this->target->{$property} = $value; // @phpstan-ignore-line
|
$this->target->{$property} = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,7 +37,7 @@ final class HigherOrderTapProxy
|
|||||||
public function __get(string $property)
|
public function __get(string $property)
|
||||||
{
|
{
|
||||||
if (property_exists($this->target, $property)) {
|
if (property_exists($this->target, $property)) {
|
||||||
return $this->target->{$property}; // @phpstan-ignore-line
|
return $this->target->{$property};
|
||||||
}
|
}
|
||||||
|
|
||||||
$className = (new ReflectionClass($this->target))->getName();
|
$className = (new ReflectionClass($this->target))->getName();
|
||||||
|
|||||||
Reference in New Issue
Block a user