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

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 = []

$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 = null

$placeholders

private static array<string|int, mixed> $placeholders = []

$placeholderUniquePrefixes

private static array<string|int, mixed> $placeholderUniquePrefixes = []

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
throws
InvalidArgumentException

if the name contains a period

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>

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>|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()

Returns true when the node has a default value.

public hasDefaultValue() : bool
Return values
bool

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

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

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
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

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

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

        
On this page

Search results