PackageIdentifierTypeConverter extends AbstractTypeConverter

FinalYes

Maps an array with keys 'packageKey', 'version' and 'remote' to a {@see PackageIdentifier} value object, enabling it to be used directly as a typed Extbase action parameter.

Internal

This class is a specific converter implementation and is not part of the Public TYPO3 API.

Table of Contents

Methods

convertFrom()  : mixed|Error
Actually convert from $source to $targetType, taking into account the fully built $convertedChildProperties and $configuration.
getSourceChildPropertiesToBeConverted()  : array<string|int, mixed>
Return a list of sub-properties inside the source object.
getTargetTypeForSource()  : string
Returns the type for a given source, depending on e.g. the __type setting or other properties.
getTypeOfChildProperty()  : string
Return the type of a given sub-property inside the $targetType

Methods

convertFrom()

Actually convert from $source to $targetType, taking into account the fully built $convertedChildProperties and $configuration.

public convertFrom(mixed $source, string $targetType[, array<string|int, mixed> $convertedChildProperties = [] ][, PropertyMappingConfigurationInterface|null $configuration = null ]) : mixed|Error

The return value can be one of three types:

  • an arbitrary object, or a simple type (which has been created while mapping). This is the normal case.
  • NULL, indicating that this object should not be mapped (i.e. a "File Upload" Converter could return NULL if no file has been uploaded, and a silent failure should occur.
  • An instance of \TYPO3\CMS\Extbase\Error\Error -- This will be a user-visible error message later on. Furthermore, it should throw an Exception if an unexpected failure (like a security error) occurred or a configuration issue happened.
Parameters
$source : mixed
$targetType : string
$convertedChildProperties : array<string|int, mixed> = []
$configuration : PropertyMappingConfigurationInterface|null = null
Return values
mixed|Error

the target type, or an error object if a user-error occurred

getSourceChildPropertiesToBeConverted()

Return a list of sub-properties inside the source object.

public getSourceChildPropertiesToBeConverted(mixed $source) : array<string|int, mixed>
Parameters
$source : mixed
Tags
todo

this method is only used for converter sources that have children (i.e. objects). Introduce another ChildPropertyAwareTypeConverterInterface and drop this method from the main interface

Returns an empty list of sub property names

Return values
array<string|int, mixed>

getTargetTypeForSource()

Returns the type for a given source, depending on e.g. the __type setting or other properties.

public getTargetTypeForSource(mixed $source, string $originalTargetType[, PropertyMappingConfigurationInterface|null $configuration = null ]) : string
Parameters
$source : mixed

the source data

$originalTargetType : string

the type we originally want to convert to

$configuration : PropertyMappingConfigurationInterface|null = null
Tags
todo

The concept of this method is flawed because it enables the override of the target type depending on the structure of the source. So, technically we no longer convert type A to B but source of type A with structure X to type B defined by X. This makes a type converter non-deterministic.

Returns the $originalTargetType unchanged in this implementation.

Return values
string

getTypeOfChildProperty()

Return the type of a given sub-property inside the $targetType

public getTypeOfChildProperty(string $targetType, string $propertyName, PropertyMappingConfigurationInterface $configuration) : string
Parameters
$targetType : string
$propertyName : string
$configuration : PropertyMappingConfigurationInterface
Tags
todo

this method is only used for converter sources that have children (i.e. objects). Introduce another ChildPropertyAwareTypeConverterInterface and drop this method from the main interface

This method is never called, as getSourceChildPropertiesToBeConverted() returns an empty array.

Return values
string

the type of $propertyName in $targetType

On this page

Search results