Documentation

PrototypedArrayNode extends ArrayNode
in package

Represents a prototyped Array node in the config tree.

Tags
author

Johannes M. Schmitt schmittjoh@gmail.com

Table of Contents

DEFAULT_PATH_SEPARATOR  = '.'
$addIfNotSet  : mixed
$allowFalse  : mixed
$allowNewKeys  : mixed
$allowOverwrite  : mixed
$attributes  : mixed
$children  : mixed
$defaultChildren  : mixed
$defaultValue  : mixed
$deprecation  : mixed
$equivalentValues  : mixed
$finalValidationClosures  : mixed
$ignoreExtraKeys  : mixed
$keyAttribute  : mixed
$minNumberOfElements  : mixed
$name  : mixed
$normalizationClosures  : mixed
$normalizeKeys  : mixed
$parent  : mixed
$pathSeparator  : mixed
$performDeepMerging  : mixed
$prototype  : mixed
$removeExtraKeys  : mixed
$removeKeyAttribute  : mixed
$required  : mixed
$xmlRemappings  : mixed
$handlingPlaceholder  : mixed
$placeholders  : mixed
$placeholderUniquePrefixes  : mixed
$valuePrototypes  : array<string|int, NodeInterface>
__construct()  : mixed
addChild()  : mixed
Disable adding concrete children for prototyped nodes.
addEquivalentValue()  : mixed
Adds an equivalent value.
finalize()  : mixed
Finalizes a value.
getAttribute()  : mixed
getAttributes()  : array<string|int, mixed>
getChildren()  : array<string, NodeInterface>
Retrieves the children of this node.
getDefaultValue()  : mixed
{@inheritdoc}
getDeprecation()  : array<string|int, mixed>
getDeprecationMessage()  : string
Returns the deprecated message.
getExample()  : string|array<string|int, mixed>|null
Retrieves the example configuration for this node.
getInfo()  : string|null
Returns info message.
getKeyAttribute()  : string|null
Retrieves the name of the attribute which value should be used as key.
getName()  : string
Returns the name of the node.
getParent()  : NodeInterface|null
Returns parent node for this node.
getPath()  : string
Returns the path of the node.
getPrototype()  : PrototypeNodeInterface
Retrieves the prototype.
getXmlRemappings()  : array<string|int, mixed>
Gets the xml remappings that should be performed.
hasAttribute()  : bool
hasDefaultValue()  : mixed
{@inheritdoc}
isDeprecated()  : bool
Checks if this node is deprecated.
isRequired()  : bool
Returns true when the node is required.
merge()  : mixed
Merges two values together.
normalize()  : mixed
Normalizes a value.
removeAttribute()  : mixed
setAddChildrenIfNoneSet()  : mixed
Adds default children when none are set.
setAddIfNotSet()  : mixed
Sets whether to add default values for this array if it has not been defined in any of the configuration files.
setAllowFalse()  : mixed
Sets whether false is allowed as value indicating that the array should be unset.
setAllowNewKeys()  : mixed
Sets whether new keys can be defined in subsequent configurations.
setAllowOverwrite()  : mixed
Sets if this node can be overridden.
setAttribute()  : mixed
setAttributes()  : mixed
setDefaultValue()  : mixed
Sets the default value of this node.
setDeprecated()  : mixed
Sets this node as deprecated.
setExample()  : mixed
Sets the example configuration for this node.
setFinalValidationClosures()  : mixed
Sets the closures used for final validation.
setIgnoreExtraKeys()  : mixed
Whether extra keys should just be ignored without an exception.
setInfo()  : mixed
Sets an info message.
setKeyAttribute()  : mixed
Sets the attribute which value is to be used as key.
setMinNumberOfElements()  : mixed
Sets the minimum number of elements that a prototype based node must contain. By default this is zero, meaning no elements.
setName()  : mixed
Sets the name of the node.
setNormalizationClosures()  : mixed
Sets the closures used for normalization.
setNormalizeKeys()  : mixed
setPerformDeepMerging()  : mixed
Sets if deep merging should occur.
setPrototype()  : mixed
Sets the node prototype.
setRequired()  : mixed
Set this node as required.
setXmlRemappings()  : mixed
Sets the xml remappings that should be performed.
shouldIgnoreExtraKeys()  : bool
Returns true when extra keys should be ignored without an exception.
allowPlaceholders()  : bool
Tests if placeholder values are allowed for this node.
finalizeValue()  : mixed
Finalizes a value.
getValidPlaceholderTypes()  : array<string|int, mixed>
Gets allowed dynamic types for this node.
isHandlingPlaceholder()  : bool
Tests if a placeholder is being handled currently.
mergeValues()  : mixed
Merges two values together.
normalizeValue()  : mixed
Normalizes the value.
preNormalize()  : mixed
Normalizes the value before any other normalization is applied.
remapXml()  : array<string|int, mixed>
Remaps multiple singular values to a single plural value.
validateType()  : mixed
Validates the type of a Node.
doValidateType()  : void
getPrototypeForChild()  : mixed
Returns a prototype for the child node that is associated to $key in the value array.
resolvePlaceholderValue()  : mixed

Constants

DEFAULT_PATH_SEPARATOR

public mixed DEFAULT_PATH_SEPARATOR = '.'

Properties

$addIfNotSet

protected mixed $addIfNotSet = false

$allowFalse

protected mixed $allowFalse = false

$allowNewKeys

protected mixed $allowNewKeys = true

$allowOverwrite

protected mixed $allowOverwrite = true

$attributes

protected mixed $attributes = []

$deprecation

protected mixed $deprecation = []

$equivalentValues

protected mixed $equivalentValues = []

$finalValidationClosures

protected mixed $finalValidationClosures = []

$ignoreExtraKeys

protected mixed $ignoreExtraKeys = false

$normalizationClosures

protected mixed $normalizationClosures = []

$normalizeKeys

protected mixed $normalizeKeys = true

$pathSeparator

protected mixed $pathSeparator

$performDeepMerging

protected mixed $performDeepMerging = true

$removeExtraKeys

protected mixed $removeExtraKeys = true

$required

protected mixed $required = false

$xmlRemappings

protected mixed $xmlRemappings = []

$handlingPlaceholder

private mixed $handlingPlaceholder

$placeholders

private static mixed $placeholders = []

$placeholderUniquePrefixes

private static mixed $placeholderUniquePrefixes = []

Methods

__construct()

public __construct(string|null $name[, NodeInterface|null $parent = null ][, string $pathSeparator = self::DEFAULT_PATH_SEPARATOR ]) : mixed
Parameters
$name : string|null
$parent : NodeInterface|null = null
$pathSeparator : string = self::DEFAULT_PATH_SEPARATOR
Tags
throws
InvalidArgumentException

if the name contains a period

Return values
mixed

addEquivalentValue()

Adds an equivalent value.

public addEquivalentValue(mixed $originalValue, mixed $equivalentValue) : mixed
Parameters
$originalValue : mixed
$equivalentValue : mixed
Return values
mixed

finalize()

Finalizes a value.

public final finalize(mixed $value) : mixed
Parameters
$value : mixed

The value to finalize

Return values
mixed

getAttribute()

public getAttribute(string $key[, mixed $default = null ]) : mixed
Parameters
$key : string
$default : mixed = null
Return values
mixed

getAttributes()

public getAttributes() : array<string|int, mixed>
Return values
array<string|int, mixed>

getDefaultValue()

{@inheritdoc}

public getDefaultValue() : mixed

The default value could be either explicited or derived from the prototype default value.

Return values
mixed

getDeprecation()

public getDeprecation(string $node, string $path) : array<string|int, mixed>
Parameters
$node : string

The configuration node name

$path : string

The path of the node

Return values
array<string|int, mixed>

getDeprecationMessage()

Returns the deprecated message.

public getDeprecationMessage(string $node, string $path) : string
Parameters
$node : string

the configuration node name

$path : string

the path of the node

Tags
deprecated

since Symfony 5.1, use "getDeprecation()" instead.

Return values
string

getExample()

Retrieves the example configuration for this node.

public getExample() : string|array<string|int, mixed>|null
Return values
string|array<string|int, mixed>|null

getInfo()

Returns info message.

public getInfo() : string|null
Return values
string|null

getKeyAttribute()

Retrieves the name of the attribute which value should be used as key.

public getKeyAttribute() : string|null
Return values
string|null

getName()

Returns the name of the node.

public getName() : string
Return values
string

getPath()

Returns the path of the node.

public getPath() : string
Return values
string

getXmlRemappings()

Gets the xml remappings that should be performed.

public getXmlRemappings() : array<string|int, mixed>
Return values
array<string|int, mixed>

an array of the form [[string, string]]

hasAttribute()

public hasAttribute(string $key) : bool
Parameters
$key : string
Return values
bool

hasDefaultValue()

{@inheritdoc}

public hasDefaultValue() : mixed
Return values
mixed

isDeprecated()

Checks if this node is deprecated.

public isDeprecated() : bool
Return values
bool

isRequired()

Returns true when the node is required.

public isRequired() : bool
Return values
bool

merge()

Merges two values together.

public final merge(mixed $leftSide, mixed $rightSide) : mixed
Parameters
$leftSide : mixed
$rightSide : mixed
Return values
mixed

normalize()

Normalizes a value.

public final normalize(mixed $value) : mixed
Parameters
$value : mixed

The value to normalize

Return values
mixed

removeAttribute()

public removeAttribute(string $key) : mixed
Parameters
$key : string
Return values
mixed

setAddChildrenIfNoneSet()

Adds default children when none are set.

public setAddChildrenIfNoneSet([int|string|array<string|int, mixed>|null $children = ['defaults'] ]) : mixed
Parameters
$children : int|string|array<string|int, mixed>|null = ['defaults']

The number of children|The child name|The children names to be added

Return values
mixed

setAddIfNotSet()

Sets whether to add default values for this array if it has not been defined in any of the configuration files.

public setAddIfNotSet(bool $boolean) : mixed
Parameters
$boolean : bool
Return values
mixed

setAllowFalse()

Sets whether false is allowed as value indicating that the array should be unset.

public setAllowFalse(bool $allow) : mixed
Parameters
$allow : bool
Return values
mixed

setAllowNewKeys()

Sets whether new keys can be defined in subsequent configurations.

public setAllowNewKeys(bool $allow) : mixed
Parameters
$allow : bool
Return values
mixed

setAllowOverwrite()

Sets if this node can be overridden.

public setAllowOverwrite(bool $allow) : mixed
Parameters
$allow : bool
Return values
mixed

setAttribute()

public setAttribute(string $key, mixed $value) : mixed
Parameters
$key : string
$value : mixed
Return values
mixed

setAttributes()

public setAttributes(array<string|int, mixed> $attributes) : mixed
Parameters
$attributes : array<string|int, mixed>
Return values
mixed

setDefaultValue()

Sets the default value of this node.

public setDefaultValue(array<string|int, mixed> $value) : mixed
Parameters
$value : array<string|int, mixed>
Return values
mixed

setDeprecated()

Sets this node as deprecated.

public setDeprecated(string $package) : mixed
Parameters
$package : string

The name of the composer package that is triggering the deprecation

Return values
mixed

setExample()

Sets the example configuration for this node.

public setExample(string|array<string|int, mixed> $example) : mixed
Parameters
$example : string|array<string|int, mixed>
Return values
mixed

setFinalValidationClosures()

Sets the closures used for final validation.

public setFinalValidationClosures(array<string|int, Closure$closures) : mixed
Parameters
$closures : array<string|int, Closure>

An array of Closures used for final validation

Return values
mixed

setIgnoreExtraKeys()

Whether extra keys should just be ignored without an exception.

public setIgnoreExtraKeys(bool $boolean[, bool $remove = true ]) : mixed
Parameters
$boolean : bool

To allow extra keys

$remove : bool = true

To remove extra keys

Return values
mixed

setInfo()

Sets an info message.

public setInfo(string $info) : mixed
Parameters
$info : string
Return values
mixed

setKeyAttribute()

Sets the attribute which value is to be used as key.

public setKeyAttribute(string $attribute[, bool $remove = true ]) : mixed

This is useful when you have an indexed array that should be an associative array. You can select an item from within the array to be the key of the particular item. For example, if "id" is the "key", then:

[
    ['id' => 'my_name', 'foo' => 'bar'],
];

becomes

 [
     'my_name' => ['foo' => 'bar'],
 ];

If you'd like "'id' => 'my_name'" to still be present in the resulting array, then you can set the second argument of this method to false.

Parameters
$attribute : string

The name of the attribute which value is to be used as a key

$remove : bool = true

Whether or not to remove the key

Return values
mixed

setMinNumberOfElements()

Sets the minimum number of elements that a prototype based node must contain. By default this is zero, meaning no elements.

public setMinNumberOfElements(int $number) : mixed
Parameters
$number : int
Return values
mixed

setName()

Sets the name of the node.

public setName(string $name) : mixed
Parameters
$name : string
Return values
mixed

setNormalizationClosures()

Sets the closures used for normalization.

public setNormalizationClosures(array<string|int, Closure$closures) : mixed
Parameters
$closures : array<string|int, Closure>

An array of Closures used for normalization

Return values
mixed

setNormalizeKeys()

public setNormalizeKeys(bool $normalizeKeys) : mixed
Parameters
$normalizeKeys : bool
Return values
mixed

setPerformDeepMerging()

Sets if deep merging should occur.

public setPerformDeepMerging(bool $boolean) : mixed
Parameters
$boolean : bool
Return values
mixed

setRequired()

Set this node as required.

public setRequired(bool $boolean) : mixed
Parameters
$boolean : bool
Return values
mixed

setXmlRemappings()

Sets the xml remappings that should be performed.

public setXmlRemappings(array<string|int, mixed> $remappings) : mixed
Parameters
$remappings : array<string|int, mixed>

An array of the form [[string, string]]

Return values
mixed

shouldIgnoreExtraKeys()

Returns true when extra keys should be ignored without an exception.

public shouldIgnoreExtraKeys() : bool
Return values
bool

allowPlaceholders()

Tests if placeholder values are allowed for this node.

protected allowPlaceholders() : bool
Return values
bool

finalizeValue()

Finalizes a value.

protected finalizeValue(mixed $value) : mixed
Parameters
$value : mixed

The value to finalize

Return values
mixed

getValidPlaceholderTypes()

Gets allowed dynamic types for this node.

protected getValidPlaceholderTypes() : array<string|int, mixed>
Return values
array<string|int, mixed>

isHandlingPlaceholder()

Tests if a placeholder is being handled currently.

protected isHandlingPlaceholder() : bool
Return values
bool

mergeValues()

Merges two values together.

protected mergeValues(mixed $leftSide, mixed $rightSide) : mixed
Parameters
$leftSide : mixed
$rightSide : mixed
Return values
mixed

normalizeValue()

Normalizes the value.

protected normalizeValue(mixed $value) : mixed
Parameters
$value : mixed

The value to normalize

Tags
throws
DuplicateKeyException
Return values
mixed

preNormalize()

Normalizes the value before any other normalization is applied.

protected preNormalize(mixed $value) : mixed
Parameters
$value : mixed
Return values
mixed

remapXml()

Remaps multiple singular values to a single plural value.

protected remapXml(array<string|int, mixed> $value) : array<string|int, mixed>
Parameters
$value : array<string|int, mixed>
Return values
array<string|int, mixed>

validateType()

Validates the type of a Node.

protected abstract validateType(mixed $value) : mixed
Parameters
$value : mixed

The value to validate

Tags
throws
InvalidTypeException

when the value is invalid

Return values
mixed

doValidateType()

private doValidateType(mixed $value) : void
Parameters
$value : mixed
Return values
void

getPrototypeForChild()

Returns a prototype for the child node that is associated to $key in the value array.

private getPrototypeForChild(string $key) : mixed

For general child nodes, this will be $this->prototype. But if $this->removeKeyAttribute is true and there are only two keys in the child node: one is same as this->keyAttribute and the other is 'value', then the prototype will be different.

For example, assume $this->keyAttribute is 'name' and the value array is as follows:

[
    [
        'name' => 'name001',
        'value' => 'value001'
    ]
]

Now, the key is 0 and the child node is:

[
   'name' => 'name001',
   'value' => 'value001'
]

When normalizing the value array, the 'name' element will removed from the child node and its value becomes the new key of the child node:

[
    'name001' => ['value' => 'value001']
]

Now only 'value' element is left in the child node which can be further simplified into a string:

['name001' => 'value001']

Now, the key becomes 'name001' and the child node becomes 'value001' and the prototype of child node 'name001' should be a ScalarNode instead of an ArrayNode instance.

Parameters
$key : string
Return values
mixed

resolvePlaceholderValue()

private static resolvePlaceholderValue(mixed $value) : mixed
Parameters
$value : mixed
Return values
mixed

Search results