isFile() && $file->getExtension() === 'php') { $files[] = $file->getPathname(); } } sort($files); return $files; } protected function assertFilesDoNotContain(string $relative, array $needles, array $excludePathContains = []): void { foreach ($this->phpFiles($relative) as $file) { foreach ($excludePathContains as $exclude) { if (str_contains($file, $exclude)) { continue 2; } } $contents = file_get_contents($file) ?: ''; foreach ($needles as $needle) { $this->assertStringNotContainsString($needle, $contents, $file.' contains forbidden pattern: '.$needle); } } } }