*/ public static function environment(): array { self::ensure_registered(); return self::$detector->detect(); } public static function run_audit( bool $persist = true ): AuditReport { self::ensure_registered(); $facts = self::$detector->detect(); $settings = self::$setup->prefill_from_environment( $facts, $persist ); $report = self::$audit->run( $settings, $facts ); if ( $persist ) { self::$repository->save_audit_cache( $report->to_array() ); } return $report; } public static function last_report(): ?AuditReport { self::ensure_registered(); $cached = self::$repository->get_audit_cache(); return null === $cached ? null : AuditReport::from_array( $cached ); } /** @return array */ public static function diagnostics(): array { self::ensure_registered(); $facts = self::$detector->detect(); $report = self::$audit->run( self::$setup->get_settings(), $facts ); return self::$diagnostics->build( self::$setup->get_settings(), $facts, $report ); } private static function ensure_registered(): void { if ( ! self::$registered ) { self::register(); } } private function __construct() {} }