If the source is a string, is is converted depending on CONFIGURATION_STRING_FORMAT,
which can be STRING_FORMAT_CSV or STRING_FORMAT_JSON. For CSV the delimiter can be
set via CONFIGURATION_STRING_DELIMITER.

If the source is a PersistentResource object, it is converted to an array. The actual resource
content is either embedded as base64-encoded data or saved to a file, depending on
CONFIGURATION_RESOURCE_EXPORT_TYPE. For RESOURCE_EXPORT_TYPE_FILE the setting
CONFIGURATION_RESOURCE_SAVE_PATH must be set as well.

Converter which transforms from string, integer and array into DateTime objects.

For integers the default is to treat them as a unix timestamp. If a format to cerate from is given, this will be
used instead.

If source is a string it is expected to be formatted according to DEFAULT_DATE_FORMAT. This default date format
can be overridden in the initialize*Action() method like this:

$this->arguments['<argumentName>']->getPropertyMappingConfiguration()->forProperty('<propertyName>')// this line can be skipped in order to specify the format for all properties->setTypeConverterOption(\Neos\Flow\Property\TypeConverter\DateTimeConverter::class,\Neos\Flow\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,'<dateFormat>');

If the source is of type array, it is possible to override the format in the source:

array('date'=>'<dateString>','dateFormat'=>'<dateFormat>');

By using an array as source you can also override time and timezone of the created DateTime object:

This is basically done by simply casting it, unless the input is a string and you provide some configuration
options which will make this converter use Flow’s locale parsing capabilities in order to respect deviating
decimal separators.

Using NULL or an empty string as input will result in a NULL return value.

Just providing true as option value will use the current default locale. In case that default locale is “DE”
for Germany for example, where a comma is used as decimal separator, the mentioned code will return
(float)15.5 when the input was (string)”15,50”.

There are two parsing modes available, strict and lenient mode. Strict mode will check all constraints of the provided
format, and if any of them are not fulfilled, the conversion will not take place.
In Lenient mode the parser will try to extract the intended number from the string, even if it’s not well formed.
Default for strict mode is true.

Format type can be decimal, percent or currency; represented as class constant FORMAT_TYPE_DECIMAL,
FORMAT_TYPE_PERCENT or FORMAT_TYPE_CURRENCY of class NeosFlowI18nCldrReaderNumbersReader.
Default, if none given, is FORMAT_TYPE_DECIMAL.

Format type can be default, full, long, medium or short; represented as class constant FORMAT_LENGTH_DEFAULT,
FORMAT_LENGTH_FULL, FORMAT_LENGTH_LONG etc., of class NeosFlowI18nCldrReaderNumbersReader.
The format length has a technical background in the CLDR repository, and specifies whether a different number
pattern should be used. In most cases leaving this DEFAULT would be the correct choice.

Converter which transforms strings to arrays using the configured strategy.
This TypeConverter is used by default to decode the content of a HTTP request and it currently supports json and xml
based media types as well as urlencoded content.

This converter will only be used on target types that are not entities or value objects (for those the
PersistentObjectConverter is used).

The target type can be overridden in the source by setting the __type key to the desired value.

The converter will return an instance of the target type with all properties given in the source array set to
the respective values. For the mechanics used to set the values see ObjectAccess::setProperty().

This converter transforms arrays or strings to persistent objects. It does the following:

If the input is string, it is assumed to be a UUID. Then, the object is fetched from persistence.

If the input is array, we check if it has an identity property.

If the input has NO identity property, but additional properties, we create a new object and return it.
However, we only do this if the configuration option “CONFIGURATION_CREATION_ALLOWED” is true.

If the input has an identity property AND the configuration option “CONFIGURATION_IDENTITY_CREATION_ALLOWED” is set,
we fetch the object from persistent or create a new object if none was found and then set the sub-properties.

If the input has an identity property and NO additional properties, we fetch the object from persistence.

If the input has an identity property AND additional properties, we fetch the object from persistence,
and set the sub-properties. We only do this if the configuration option “CONFIGURATION_MODIFICATION_ALLOWED” is true.

A type converter for converting strings, array and uploaded files to PersistentResource objects.

Has two major working modes:

File Uploads by PHP

In this case, the input array is expected to be a fresh file upload following the native PHP handling. The
temporary upload file is then imported through the resource manager.

To enable the handling of files that have already been uploaded earlier, the special field [‘originallySubmittedResource’]
is checked. If set, it is used to fetch a file that has already been uploaded even if no file has been actually uploaded in the current request.

Strings / arbitrary Arrays

If the source

is an array and contains the key ‘__identity’

the converter will find an existing resource with the given identity or continue and assign the given identity if
CONFIGURATION_IDENTITY_CREATION_ALLOWED is set.

is a string looking like a SHA1 (40 characters [0-9a-f]) or

is an array and contains the key ‘hash’ with a value looking like a SHA1 (40 characters [0-9a-f])

the converter will look up an existing PersistentResource with that hash and return it if found. If that fails,
the converter will try to import a file named like that hash from the configured CONFIGURATION_RESOURCE_LOAD_PATH.

If no hash is given in an array source but the key ‘data’ is set, the content of that key is assumed a binary string
and a PersistentResource representing this content is created and returned.

The imported PersistentResource will be given a ‘filename’ if set in the source array in both cases (import from file or data).