import() methodcannotBeEmpty() if the value is validated with validate()Resource\* classes final and not implement Serializable anymoreroot() method in TreeBuilder, pass the root node information to the constructor insteadTreeBuilder without passing root node informationFileLoaderLoadException to LoaderLoadExceptionsetPathSeparator method to NodeBuilder class$pathSeparator constructor argument to BaseNodeProcessor class has been made finalConfigCachePasssetDeprecated() method to indicate a deprecated nodeXmlUtils::parse() method to parse an XML stringConfigCachePassReflectionClassResource class$exists constructor argument to ClassExistenceResourceClassExistenceResource work with interfaces and traitsConfigCachePass (originally in FrameworkBundle)castToArray() helper to turn any config value into an arrayReferenceDumper classResourceInterface::isFresh() methodBCResourceInterfaceChecker classResourceInterface::getResource() methodThe edge case of defining just one value for nodes of type Enum is now allowed:
$rootNode
->children()
->enumNode('variable')
->values(['value'])
->end()
->end()
;
Before: InvalidArgumentException (variable must contain at least two
distinct elements).
After: the code will work as expected and it will restrict the values of the
variable option to just value.
ResourceInterface::isFresh() method. If you implement custom resource types and they
can be validated that way, make them implement the new SelfCheckingResourceInterface.ConfigCacheInterface, ConfigCacheFactoryInterface and a basic ConfigCacheFactory
implementation to delegate creation of ConfigCache instancesArrayNodeDefinition::canBeEnabled() and ArrayNodeDefinition::canBeDisabled()
to ease configuration when some sections are respectively disabled / enabled
by default.normalizeKeys() method for array nodes (to avoid key normalization)ArrayNodeDefinitionSerializable on resourcesLoaderResolverInterface is now used instead of LoaderResolver for type
hinting