*/ private array $items = []; /** * Register. * * @param AutomationCondition $condition Condition. * * @since 0.1.0 */ public function register( AutomationCondition $condition ): void { $this->items[ $condition->identifier() ] = $condition; } /** * Find. * * @param string $identifier Identifier. * * @since 0.1.0 */ public function get( string $identifier ): ?AutomationCondition { return $this->items[ $identifier ] ?? null; } /** * All. * * @return list * * @since 0.1.0 */ public function all(): array { return array_values( $this->items ); } /** * Compatible with a subject type. * * @param SubjectType $subject Subject. * @return list * * @since 0.1.0 */ public function for_subject( SubjectType $subject ): array { $out = []; foreach ( $this->items as $condition ) { if ( in_array( $subject, $condition->subject_types(), true ) ) { $out[] = $condition; } } return $out; } }