subjectExtractor = $ex5; $this->extractors = [ $ex1, $ex2, $ex3, $ex4, $ex5, ]; } #[\Override] public function prepare(Account $account, array $incomingMailboxes, array $outgoingMailboxes, array $messages): void { foreach ($this->extractors as $extractor) { $extractor->prepare($account, $incomingMailboxes, $outgoingMailboxes, $messages); } } #[\Override] public function extract(Message $message): array { return array_flat_map(static fn (IExtractor $extractor) => $extractor->extract($message), $this->extractors); } public function getSubjectExtractor(): SubjectExtractor { return $this->subjectExtractor; } }