*/ private array $channels = []; /** * Register a channel. * * @param NotificationChannel $channel Channel. * * @since 0.1.0 */ public function register( NotificationChannel $channel ): void { $this->channels[ $channel->id() ] = $channel; } /** * Get a channel by id. * * @param string $id Channel id. * * @since 0.1.0 */ public function get( string $id ): ?NotificationChannel { $channels = $this->all(); return $channels[ $id ] ?? null; } /** * All channels (filterable). * * @return array * * @since 0.1.0 */ public function all(): array { $channels = $this->channels; if ( function_exists( 'apply_filters' ) ) { /** * Filter registered notification channels. * * @param array $channels Channels. * * @since 0.1.0 */ $filtered = apply_filters( 'bookline/notification/channels', $channels ); if ( is_array( $filtered ) ) { return $filtered; } } return $channels; } }