* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace SebastianBergmann\CodeCoverage\StaticAnalysis; /** * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage */ final readonly class Class_ { /** * @var non-empty-string */ private string $name; /** * @var non-empty-string */ private string $namespacedName; private string $namespace; /** * @var non-empty-string */ private string $file; /** * @var non-negative-int */ private int $startLine; /** * @var non-negative-int */ private int $endLine; /** * @var ?non-empty-string */ private ?string $parentClass; /** * @var list */ private array $interfaces; /** * @var list */ private array $traits; /** * @var array */ private array $methods; /** * @param non-empty-string $name * @param non-empty-string $namespacedName * @param non-empty-string $file * @param non-negative-int $startLine * @param non-negative-int $endLine * @param ?non-empty-string $parentClass * @param list $interfaces * @param list $traits * @param array $methods */ public function __construct(string $name, string $namespacedName, string $namespace, string $file, int $startLine, int $endLine, ?string $parentClass, array $interfaces, array $traits, array $methods) { $this->name = $name; $this->namespacedName = $namespacedName; $this->namespace = $namespace; $this->file = $file; $this->startLine = $startLine; $this->endLine = $endLine; $this->parentClass = $parentClass; $this->interfaces = $interfaces; $this->traits = $traits; $this->methods = $methods; } /** * @return non-empty-string */ public function name(): string { return $this->name; } /** * @return non-empty-string */ public function namespacedName(): string { return $this->namespacedName; } public function isNamespaced(): bool { return $this->namespace !== ''; } public function namespace(): string { return $this->namespace; } /** * @return non-empty-string */ public function file(): string { return $this->file; } /** * @return non-negative-int */ public function startLine(): int { return $this->startLine; } /** * @return non-negative-int */ public function endLine(): int { return $this->endLine; } public function hasParent(): bool { return $this->parentClass !== null; } /** * @return ?non-empty-string */ public function parentClass(): ?string { return $this->parentClass; } /** * @return list */ public function interfaces(): array { return $this->interfaces; } /** * @return list */ public function traits(): array { return $this->traits; } /** * @return array */ public function methods(): array { return $this->methods; } }