Automattic\WooCommerce\Admin\RemoteSpecs\RuleProcessors\Transformers

TransformerService::apply()public staticWC 1.0

Apply transformers to the given value.

Method of the class: TransformerService{}

No Hooks.

Return

Mixed|null.

Usage

$result = TransformerService::apply( $target_value, $transformer_configs, $is_default_set, $default_value );
$target_value(mixed) (required)
a value to transform.
$transformer_configs(array) (required)
transform configuration.
$is_default_set(true|false) (required)
flag on is default value set.
$default_value(string) (required)
default value.

TransformerService::apply() code WC 9.0.1

public static function apply( $target_value, array $transformer_configs, $is_default_set, $default_value ) {
	foreach ( $transformer_configs as $transformer_config ) {
		if ( ! isset( $transformer_config->use ) ) {
			throw new InvalidArgumentException( 'Missing required config value: use' );
		}

		if ( ! isset( $transformer_config->arguments ) ) {
			$transformer_config->arguments = null;
		}

		$transformer = self::create_transformer( $transformer_config->use );
		if ( null === $transformer ) {
			throw new InvalidArgumentException( "Unable to find a transformer by name: {$transformer_config->use}" ); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
		}

		$target_value = $transformer->transform( $target_value, $transformer_config->arguments, $is_default_set ? $default_value : null );

		// Break early when there's no more value to traverse.
		if ( null === $target_value ) {
			break;
		}
	}

	if ( $is_default_set ) {
		// Nulls always return the default value.
		if ( null === $target_value ) {
			return $default_value;
		}

		// When type of the default value is different from the target value, return the default value
		// to ensure type safety.
		if ( gettype( $default_value ) !== gettype( $target_value ) ) {
			return $default_value;
		}
	}

	return $target_value;
}