PrototypedArrayNode
        
        extends ArrayNode
    
    
            
            in package
            
        
    
    
    
Represents a prototyped Array node in the config tree.
Tags
Table of Contents
Constants
- DEFAULT_PATH_SEPARATOR = '.'
 
Properties
- $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 : array<string|int, mixed>
 - $placeholderUniquePrefixes : array<string|int, mixed>
 - $valuePrototypes : array<string|int, NodeInterface>
 
Methods
- __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
 - Returns the default value of the node.
 - getDeprecation() : array<string|int, mixed>
 - 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() : bool
 - Returns true when the node has a default value.
 - 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
     = null
    
    
    
    
$placeholders
    private
    static    array<string|int, mixed>
    $placeholders
     = []
    
    
    
    
$placeholderUniquePrefixes
    private
    static    array<string|int, 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 $parent = null ][, string $pathSeparator = self::DEFAULT_PATH_SEPARATOR ]) : mixed
    Parameters
- $name : string|null
 - $parent : NodeInterface = null
 - $pathSeparator : string = self::DEFAULT_PATH_SEPARATOR
 
Tags
addChild()
Disable adding concrete children for prototyped nodes.
    public
                    addChild(NodeInterface $node) : mixed
    Parameters
- $node : NodeInterface
 
Tags
addEquivalentValue()
Adds an equivalent value.
    public
                    addEquivalentValue(mixed $originalValue, mixed $equivalentValue) : mixed
    Parameters
- $originalValue : mixed
 - $equivalentValue : mixed
 
finalize()
Finalizes a value.
    public
        final            finalize(mixed $value) : mixed
    Parameters
- $value : mixed
 
getAttribute()
    public
                    getAttribute(string $key[, mixed $default = null ]) : mixed
    Parameters
- $key : string
 - $default : mixed = null
 
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()
Returns the default value of the node.
    public
                    getDefaultValue() : mixed
    The default value could be either explicited or derived from the prototype default value.
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>getExample()
Retrieves the example configuration for this node.
    public
                    getExample() : string|array<string|int, mixed>|null
    Return values
string|array<string|int, mixed>|nullgetInfo()
Returns info message.
    public
                    getInfo() : string|null
    Return values
string|nullgetKeyAttribute()
Retrieves the name of the attribute which value should be used as key.
    public
                    getKeyAttribute() : string|null
    Return values
string|nullgetName()
Returns the name of the node.
    public
                    getName() : string
    Return values
stringgetParent()
Returns parent node for this node.
    public
                    getParent() : NodeInterface|null
    Return values
NodeInterface|nullgetPath()
Returns the path of the node.
    public
                    getPath() : string
    Return values
stringgetPrototype()
Retrieves the prototype.
    public
                    getPrototype() : PrototypeNodeInterface
    Return values
PrototypeNodeInterfacegetXmlRemappings()
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
boolhasDefaultValue()
Returns true when the node has a default value.
    public
                    hasDefaultValue() : bool
    Return values
boolisDeprecated()
Checks if this node is deprecated.
    public
                    isDeprecated() : bool
    Return values
boolisRequired()
Returns true when the node is required.
    public
                    isRequired() : bool
    Return values
boolmerge()
Merges two values together.
    public
        final            merge(mixed $leftSide, mixed $rightSide) : mixed
    Parameters
- $leftSide : mixed
 - $rightSide : mixed
 
normalize()
Normalizes a value.
    public
        final            normalize(mixed $value) : mixed
    Parameters
- $value : mixed
 
removeAttribute()
    public
                    removeAttribute(string $key) : mixed
    Parameters
- $key : string
 
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
 
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
 
setAllowFalse()
Sets whether false is allowed as value indicating that the array should be unset.
    public
                    setAllowFalse(bool $allow) : mixed
    Parameters
- $allow : bool
 
setAllowNewKeys()
Sets whether new keys can be defined in subsequent configurations.
    public
                    setAllowNewKeys(bool $allow) : mixed
    Parameters
- $allow : bool
 
setAllowOverwrite()
Sets if this node can be overridden.
    public
                    setAllowOverwrite(bool $allow) : mixed
    Parameters
- $allow : bool
 
setAttribute()
    public
                    setAttribute(string $key, mixed $value) : mixed
    Parameters
- $key : string
 - $value : mixed
 
setAttributes()
    public
                    setAttributes(array<string|int, mixed> $attributes) : mixed
    Parameters
- $attributes : array<string|int, mixed>
 
setDefaultValue()
Sets the default value of this node.
    public
                    setDefaultValue(array<string|int, mixed> $value) : mixed
    Parameters
- $value : array<string|int, mixed>
 
setDeprecated()
Sets this node as deprecated.
    public
                    setDeprecated(string $package, string $version[, string $message = 'The child node "%node%" at path "%path%" is deprecated.' ]) : mixed
    Parameters
- $package : string
 - 
                    
The name of the composer package that is triggering the deprecation
 - $version : string
 - 
                    
The version of the package that introduced the deprecation
 - $message : string = 'The child node "%node%" at path "%path%" is deprecated.'
 - 
                    
the deprecation message to use
You can use %node% and %path% placeholders in your message to display, respectively, the node name and its complete path
 
setExample()
Sets the example configuration for this node.
    public
                    setExample(string|array<string|int, mixed> $example) : mixed
    Parameters
- $example : string|array<string|int, 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
 
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
 
setInfo()
Sets an info message.
    public
                    setInfo(string $info) : mixed
    Parameters
- $info : string
 
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
 
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
 
setName()
Sets the name of the node.
    public
                    setName(string $name) : mixed
    Parameters
- $name : string
 
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
 
setNormalizeKeys()
    public
                    setNormalizeKeys(bool $normalizeKeys) : mixed
    Parameters
- $normalizeKeys : bool
 
setPerformDeepMerging()
Sets if deep merging should occur.
    public
                    setPerformDeepMerging(bool $boolean) : mixed
    Parameters
- $boolean : bool
 
setPrototype()
Sets the node prototype.
    public
                    setPrototype(PrototypeNodeInterface $node) : mixed
    Parameters
- $node : PrototypeNodeInterface
 
setRequired()
Set this node as required.
    public
                    setRequired(bool $boolean) : mixed
    Parameters
- $boolean : bool
 
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]]
 
shouldIgnoreExtraKeys()
Returns true when extra keys should be ignored without an exception.
    public
                    shouldIgnoreExtraKeys() : bool
    Return values
boolallowPlaceholders()
Tests if placeholder values are allowed for this node.
    protected
                    allowPlaceholders() : bool
    Return values
boolfinalizeValue()
Finalizes a value.
    protected
                    finalizeValue(mixed $value) : mixed
    Parameters
- $value : 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
boolmergeValues()
Merges two values together.
    protected
                    mergeValues(mixed $leftSide, mixed $rightSide) : mixed
    Parameters
- $leftSide : mixed
 - $rightSide : mixed
 
normalizeValue()
Normalizes the value.
    protected
                    normalizeValue(mixed $value) : mixed
    Parameters
- $value : mixed
 
Tags
preNormalize()
Normalizes the value before any other normalization is applied.
    protected
                    preNormalize(mixed $value) : mixed
    Namely, you mostly have foo_bar in YAML while you have foo-bar in XML. After running this method, all keys are normalized to foo_bar.
If you have a mixed key like foo-bar_moo, it will not be altered. The key will also not be altered if the target key already exists.
Parameters
- $value : 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
                    validateType(mixed $value) : mixed
    Parameters
- $value : mixed
 
doValidateType()
    private
                    doValidateType(mixed $value) : void
    Parameters
- $value : mixed
 
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
 
resolvePlaceholderValue()
    private
            static        resolvePlaceholderValue(mixed $value) : mixed
    Parameters
- $value : mixed