* `phpstan/phpstan` v2.1.13 * `phpstan/phpstan-phpunit` v2.0.6 --- Given the following trait: ```php trait MockServerTrait { private static ?MockWebServer\MockWebServer $mockServer = null; protected static function startMockServer( string $host = '127.0.0.1', int $port = 2083, ): MockWebServer\MockWebServer { self::$mockServer?->stop(); self::$mockServer = new MockWebServer\MockWebServer($port, $host); self::$mockServer->start(); \PHPStan\dumpType(self::$mockServer); // line 55 self::assertTrue(self::$mockServer->isRunning()); \PHPStan\dumpType(self::$mockServer); // line 57 return self::$mockServer; // line 59 } } ``` When running PHPStan, I get the following errors: ``` ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Line tests/MockServerTrait.php (in context of class EliasHaeussler\CpanelRequests\Tests\MockServerAwareTestCase) ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 55 Dumped type: donatj\MockWebServer\MockWebServer ✏️ tests/MockServerTrait.php:55 57 Dumped type: donatj\MockWebServer\MockWebServer|null ✏️ tests/MockServerTrait.php:57 59 Method EliasHaeussler\CpanelRequests\Tests\MockServerAwareTestCase::startMockServer() should return donatj\MockWebServer\MockWebServer but returns donatj\MockWebServer\MockWebServer|null. 🪪 return.type ✏️ tests/MockServerTrait.php:59 ------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ``` When I omit the last `self::assertTrue`, no errors are reported anymore.
Activity
staabm commentedon Oct 29, 2025
root cause is here: phpstan/phpstan#13735
staabm commentedon Sep 8, 2026
starting with 2.3.x static calls will no longer invalidate expressions remembered on
$this- see phpstan/phpstan-src#6391(which is only related to the initial request, but does not fix it)