PrototypedArrayNode
extends ArrayNode
in package
Represents a prototyped Array node in the config tree.
Tags
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
= []
$children
protected
mixed
$children
= []
$defaultChildren
protected
mixed
$defaultChildren
$defaultValue
protected
mixed
$defaultValue
= []
$deprecation
protected
mixed
$deprecation
= []
$equivalentValues
protected
mixed
$equivalentValues
= []
$finalValidationClosures
protected
mixed
$finalValidationClosures
= []
$ignoreExtraKeys
protected
mixed
$ignoreExtraKeys
= false
$keyAttribute
protected
mixed
$keyAttribute
$minNumberOfElements
protected
mixed
$minNumberOfElements
= 0
$name
protected
mixed
$name
$normalizationClosures
protected
mixed
$normalizationClosures
= []
$normalizeKeys
protected
mixed
$normalizeKeys
= true
$parent
protected
mixed
$parent
$pathSeparator
protected
mixed
$pathSeparator
$performDeepMerging
protected
mixed
$performDeepMerging
= true
$prototype
protected
mixed
$prototype
$removeExtraKeys
protected
mixed
$removeExtraKeys
= true
$removeKeyAttribute
protected
mixed
$removeKeyAttribute
= false
$required
protected
mixed
$required
= false
$xmlRemappings
protected
mixed
$xmlRemappings
= []
$handlingPlaceholder
private
mixed
$handlingPlaceholder
$placeholders
private
static mixed
$placeholders
= []
$placeholderUniquePrefixes
private
static mixed
$placeholderUniquePrefixes
= []
$valuePrototypes
private
array<string|int, NodeInterface>
$valuePrototypes
= []
An array of the prototypes of the simplified value children
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
Return values
mixed —addChild()
Disable adding concrete children for prototyped nodes.
public
addChild(NodeInterface $node) : mixed
Parameters
- $node : NodeInterface
Tags
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> —getChildren()
Retrieves the children of this node.
public
getChildren() : array<string, NodeInterface>
Return values
array<string, NodeInterface> —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
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 —getParent()
Returns parent node for this node.
public
getParent() : NodeInterface|null
Return values
NodeInterface|null —getPath()
Returns the path of the node.
public
getPath() : string
Return values
string —getPrototype()
Retrieves the prototype.
public
getPrototype() : PrototypeNodeInterface
Return values
PrototypeNodeInterface —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 —setPrototype()
Sets the node prototype.
public
setPrototype(PrototypeNodeInterface $node) : mixed
Parameters
- $node : PrototypeNodeInterface
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
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
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