configure( $config ); } } /** * Initialize the component. * * @since 1.0.0 * @return void */ public function init(): void { if ( $this->initialized ) { return; } $this->setup_hooks(); $this->setup_dependencies(); $this->initialized = true; } /** * Check if component is initialized. * * @since 1.0.0 * @return bool True if initialized. */ public function is_initialized(): bool { return $this->initialized; } /** * Configure the component. * * @since 1.0.0 * @param array $config Configuration array. * @return void */ public function configure( array $config ): void { $this->config = array_merge( $this->get_default_config(), $config ); } /** * Get current configuration. * * @since 1.0.0 * @return array Current configuration. */ public function get_config(): array { return $this->config; } /** * Get default configuration. * * @since 1.0.0 * @return array Default configuration. */ abstract protected function get_default_config(): array; /** * Setup WordPress hooks. * * @since 1.0.0 * @return void */ abstract protected function setup_hooks(): void; /** * Setup component dependencies. * * @since 1.0.0 * @return void */ protected function setup_dependencies(): void { // Override in child classes if needed. } }