You are here

public function FileStorage::write in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Config/FileStorage.php \Drupal\Core\Config\FileStorage::write()

Writes configuration data to the storage.

Parameters

string $name: The name of a configuration object to save.

array $data: The configuration data to write.

Return value

bool TRUE on success, FALSE in case of an error.

Throws

\Drupal\Core\Config\StorageException If the back-end storage does not exist and cannot be created.

Overrides StorageInterface::write

1 method overrides FileStorage::write()
InstallStorage::write in core/lib/Drupal/Core/Config/InstallStorage.php
Overrides Drupal\Core\Config\FileStorage::write().

File

core/lib/Drupal/Core/Config/FileStorage.php, line 141

Class

FileStorage
Defines the file storage.

Namespace

Drupal\Core\Config

Code

public function write($name, array $data) {
  try {
    $encoded_data = $this
      ->encode($data);
  } catch (InvalidDataTypeException $e) {
    throw new StorageException("Invalid data type in config {$name}: {$e->getMessage()}");
  }
  $target = $this
    ->getFilePath($name);
  $status = @file_put_contents($target, $encoded_data);
  if ($status === FALSE) {

    // Try to make sure the directory exists and try writing again.
    $this
      ->ensureStorage();
    $status = @file_put_contents($target, $encoded_data);
  }
  if ($status === FALSE) {
    throw new StorageException('Failed to write configuration file: ' . $this
      ->getFilePath($name));
  }
  else {
    $this
      ->getFileSystem()
      ->chmod($target);
  }
  $this->fileCache
    ->set($target, $data);
  return TRUE;
}