protected StorableConfigBase::castValue($key, $value)
Casts the value to correct data type using the configuration schema.
Parameters
string $key: A string that maps to a key within the configuration data.
string $value: Value to associate with the key.
Return value
mixed The value cast to the type indicated in the schema.
Throws
\Drupal\Core\Config\UnsupportedDataTypeConfigException If the value is unsupported in configuration.
File
- core/lib/Drupal/Core/Config/StorableConfigBase.php, line 178
Class
- StorableConfigBase
- Provides a base class for configuration objects with storage support.
Namespace
Drupal\Core\Config
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | protected function castValue( $key , $value ) { $element = $this ->getSchemaWrapper()->get( $key ); // Do not cast value if it is unknown or defined to be ignored. if ( $element && ( $element instanceof Undefined || $element instanceof Ignore)) { // Do validate the value (may throw UnsupportedDataTypeConfigException) // to ensure unsupported types are not supported in this case either. $this ->validateValue( $key , $value ); return $value ; } if ( is_scalar ( $value ) || $value === NULL) { if ( $element && $element instanceof PrimitiveInterface) { // Special handling for integers and floats since the configuration // system is primarily concerned with saving values from the Form API // we have to special case the meaning of an empty string for numeric // types. In PHP this would be casted to a 0 but for the purposes of // configuration we need to treat this as a NULL. $empty_value = $value === '' && ( $element instanceof IntegerInterface || $element instanceof FloatInterface); if ( $value === NULL || $empty_value ) { $value = NULL; } else { $value = $element ->getCastedValue(); } } } else { // Throw exception on any non-scalar or non-array value. if (! is_array ( $value )) { throw new UnsupportedDataTypeConfigException( "Invalid data type for config element {$this->getName()}:$key" ); } // Recurse into any nested keys. foreach ( $value as $nested_value_key => $nested_value ) { $value [ $nested_value_key ] = $this ->castValue( $key . '.' . $nested_value_key , $nested_value ); } } return $value ; } |
Please login to continue.