$config Config. * * @throws DomainException When identifier is empty. */ public function __construct( private readonly string $identifier, private readonly array $config = [], ) { if ( '' === trim( $this->identifier ) ) { throw new DomainException( 'automation.condition_empty', 'Condition identifier must not be empty.' ); } } /** * Identifier. * * @since 0.1.0 */ public function identifier(): string { return $this->identifier; } /** * Config. * * @return array * * @since 0.1.0 */ public function config(): array { return $this->config; } /** * Serialise. * * @return array * * @since 0.1.0 */ public function to_array(): array { return [ 'identifier' => $this->identifier, 'config' => $this->config, ]; } /** * Hydrate. * * @param array $data Data. * * @since 0.1.0 */ public static function from_array( array $data ): self { $config = isset( $data['config'] ) && is_array( $data['config'] ) ? $data['config'] : []; return new self( (string) ( $data['identifier'] ?? '' ), $config ); } }