Error Identifier: continue.outOfLoop
Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.
Code example #
<?php declare(strict_types = 1);
class Foo
{
public function doFoo(): void
{
if (rand(0, 1)) {
continue;
}
}
}
Why is it reported? #
The continue keyword can only be used inside a loop (for, foreach, while, do-while) or a switch statement. Using continue outside of these structures is a fatal error in PHP because there is no enclosing loop to continue to the next iteration of.
This also applies when continue appears inside a closure that is nested within a loop – the closure creates a new scope, so continue inside it does not refer to the outer loop.
How to fix it #
Use return instead if the intent is to exit the function:
<?php declare(strict_types = 1);
class Foo
{
public function doFoo(): void
{
if (rand(0, 1)) {
- continue;
+ return;
}
}
}
Or move the code inside a loop if a loop was intended:
<?php declare(strict_types = 1);
class Foo
{
public function doFoo(): void
{
+ while (true) {
if (rand(0, 1)) {
continue;
}
+ }
}
}
Non-ignorable error #
This error cannot be ignored using @phpstan-ignore or the ignoreErrors configuration. Non-ignorable errors indicate code that would cause a crash or a fatal error at runtime, or a fundamental problem in the analysed code that must be addressed.