.txt. * @param string $file Divi file, relative to the Divi theme directory. * @param string $function Function or method name. * @param string|null $class Class of a method – the short name is enough (the file fixes where it * lives, and a short name is no Divi name for DiviBoundaryTest); null for a * function. * @param string $what What the plugin repeats (German, for reports). * @param list $features [] = the default of the manifest. */ public function __construct( public readonly string $id, public readonly string $file, public readonly string $function, public readonly ?string $class, public readonly string $what, private readonly array $features = [] ) { } public function features(): array { return $this->features; } public function label(): string { $class = $this->class === null ? '' : SourceFingerprint::shortName($this->class) . '::'; return $class . $this->function . '()'; } }