$events Domain event identifiers. */ public function __construct( private readonly array $events, ) {} /** * Event identifiers. * * @return list * * @since 0.1.0 */ public function events(): array { return $this->events; } /** * Whether this definition listens for an event. * * @param string $event Event identifier. * * @since 0.1.0 */ public function matches( string $event ): bool { return in_array( $event, $this->events, true ); } /** * Serialise. * * @return array{events: list} * * @since 0.1.0 */ public function to_array(): array { return [ 'events' => $this->events ]; } /** * Hydrate. * * @param array $data Data. * * @since 0.1.0 */ public static function from_array( array $data ): self { $events = []; $raw = $data['events'] ?? []; if ( is_array( $raw ) ) { foreach ( $raw as $event ) { if ( is_string( $event ) && '' !== $event ) { $events[] = $event; } } } return new self( $events ); } }