mandatoryDiagnostics = $this->removeDisabledDiagnostics($mandatoryDiagnostics, $disabledDiagnostics); $this->optionalDiagnostics = $this->removeDisabledDiagnostics($optionalDiagnostics, $disabledDiagnostics); } /** * @return DiagnosticReport */ public function runDiagnostics() { return new DiagnosticReport( $this->run($this->mandatoryDiagnostics), $this->run($this->optionalDiagnostics) ); } /** * @param Diagnostic[] $diagnostics * @return DiagnosticResult[] */ private function run(array $diagnostics) { $results = array(); foreach ($diagnostics as $diagnostic) { $results = array_merge($results, $diagnostic->execute()); } return $results; } private function removeDisabledDiagnostics(array $diagnostics, array $disabledDiagnostics) { return array_filter($diagnostics, function (Diagnostic $diagnostic) use ($disabledDiagnostics) { return ! in_array($diagnostic, $disabledDiagnostics, true); }); } }