class OperationData
Holds parameter data for operation objects during operation creation only.
@internal
Hierarchy
- class \Drupal\Composer\Plugin\Scaffold\Operations\OperationData
Expanded class hierarchy of OperationData
1 file declares its use of OperationData
- Handler.php in composer/Plugin/ Scaffold/ Handler.php 
File
- 
              composer/Plugin/ Scaffold/ Operations/ OperationData.php, line 10 
Namespace
Drupal\Composer\Plugin\Scaffold\OperationsView source
class OperationData {
  const MODE = 'mode';
  const PATH = 'path';
  const OVERWRITE = 'overwrite';
  const PREPEND = 'prepend';
  const APPEND = 'append';
  const DEFAULT = 'default';
  const FORCE_APPEND = 'force-append';
  
  /**
   * The parameter data.
   *
   * @var array
   */
  protected $data;
  
  /**
   * The destination path.
   *
   * @var string
   */
  protected $destination;
  
  /**
   * OperationData constructor.
   *
   * @param string $destination
   *   The destination path.
   * @param mixed $data
   *   The raw data array to wrap.
   */
  public function __construct($destination, $data) {
    $this->destination = $destination;
    $this->data = $this->normalizeScaffoldMetadata($destination, $data);
  }
  
  /**
   * Gets the destination path that this operation data is associated with.
   *
   * @return string
   *   The destination path for the scaffold result.
   */
  public function destination() {
    return $this->destination;
  }
  
  /**
   * Gets operation mode.
   *
   * @return string
   *   Operation mode.
   */
  public function mode() {
    return $this->data[self::MODE];
  }
  
  /**
   * Checks if path exists.
   *
   * @return bool
   *   Returns true if path exists
   */
  public function hasPath() {
    return isset($this->data[self::PATH]);
  }
  
  /**
   * Gets path.
   *
   * @return string
   *   The path.
   */
  public function path() {
    return $this->data[self::PATH];
  }
  
  /**
   * Determines overwrite.
   *
   * @return bool
   *   Returns true if overwrite mode was selected.
   */
  public function overwrite() {
    return !empty($this->data[self::OVERWRITE]);
  }
  
  /**
   * Determines whether 'force-append' has been set.
   *
   * @return bool
   *   Returns true if 'force-append' mode was selected.
   */
  public function forceAppend() {
    if ($this->hasDefault()) {
      return TRUE;
    }
    return !empty($this->data[self::FORCE_APPEND]);
  }
  
  /**
   * Checks if prepend path exists.
   *
   * @return bool
   *   Returns true if prepend exists.
   */
  public function hasPrepend() {
    return isset($this->data[self::PREPEND]);
  }
  
  /**
   * Gets prepend path.
   *
   * @return string
   *   Path to prepend data
   */
  public function prepend() {
    return $this->data[self::PREPEND];
  }
  
  /**
   * Checks if append path exists.
   *
   * @return bool
   *   Returns true if prepend exists.
   */
  public function hasAppend() {
    return isset($this->data[self::APPEND]);
  }
  
  /**
   * Gets append path.
   *
   * @return string
   *   Path to append data
   */
  public function append() {
    return $this->data[self::APPEND];
  }
  
  /**
   * Checks if default path exists.
   *
   * @return bool
   *   Returns true if there is default data available.
   */
  public function hasDefault() {
    return isset($this->data[self::DEFAULT]);
  }
  
  /**
   * Gets default path.
   *
   * @return string
   *   Path to default data
   */
  public function default() {
    return $this->data[self::DEFAULT];
  }
  
  /**
   * Normalizes metadata by converting literal values into arrays.
   *
   * Conversions performed include:
   *   - Boolean 'false' means "skip".
   *   - A string means "replace", with the string value becoming the path.
   *
   * @param string $destination
   *   The destination path for the scaffold file.
   * @param mixed $value
   *   The metadata for this operation object, which varies by operation type.
   *
   * @return array
   *   Normalized scaffold metadata with default values.
   */
  protected function normalizeScaffoldMetadata($destination, $value) {
    $defaultScaffoldMetadata = [
      self::MODE => ReplaceOp::ID,
      self::PREPEND => NULL,
      self::APPEND => NULL,
      self::DEFAULT => NULL,
      self::OVERWRITE => TRUE,
    ];
    return $this->convertScaffoldMetadata($destination, $value) + $defaultScaffoldMetadata;
  }
  
  /**
   * Performs the conversion-to-array step in normalizeScaffoldMetadata.
   *
   * @param string $destination
   *   The destination path for the scaffold file.
   * @param mixed $value
   *   The metadata for this operation object, which varies by operation type.
   *
   * @return array
   *   Normalized scaffold metadata.
   */
  protected function convertScaffoldMetadata($destination, $value) {
    if (is_bool($value)) {
      if (!$value) {
        return [
          self::MODE => SkipOp::ID,
        ];
      }
      throw new \RuntimeException("File mapping {$destination} cannot be given the value 'true'.");
    }
    if (empty($value)) {
      throw new \RuntimeException("File mapping {$destination} cannot be empty.");
    }
    if (is_string($value)) {
      $value = [
        self::PATH => $value,
      ];
    }
    // If there is no 'mode', but there is an 'append' or a 'prepend' path,
    // then the mode is 'append' (append + prepend).
    if (!isset($value[self::MODE]) && (isset($value[self::APPEND]) || isset($value[self::PREPEND]))) {
      $value[self::MODE] = AppendOp::ID;
    }
    return $value;
  }
}Members
| Title Sort descending | Modifiers | Object type | Summary | 
|---|---|---|---|
| OperationData::$data | protected | property | The parameter data. | 
| OperationData::$destination | protected | property | The destination path. | 
| OperationData::APPEND | constant | ||
| OperationData::append | public | function | Gets append path. | 
| OperationData::convertScaffoldMetadata | protected | function | Performs the conversion-to-array step in normalizeScaffoldMetadata. | 
| OperationData::DEFAULT | constant | ||
| OperationData::default | public | function | Gets default path. | 
| OperationData::destination | public | function | Gets the destination path that this operation data is associated with. | 
| OperationData::forceAppend | public | function | Determines whether 'force-append' has been set. | 
| OperationData::FORCE_APPEND | constant | ||
| OperationData::hasAppend | public | function | Checks if append path exists. | 
| OperationData::hasDefault | public | function | Checks if default path exists. | 
| OperationData::hasPath | public | function | Checks if path exists. | 
| OperationData::hasPrepend | public | function | Checks if prepend path exists. | 
| OperationData::MODE | constant | ||
| OperationData::mode | public | function | Gets operation mode. | 
| OperationData::normalizeScaffoldMetadata | protected | function | Normalizes metadata by converting literal values into arrays. | 
| OperationData::overwrite | public | function | Determines overwrite. | 
| OperationData::OVERWRITE | constant | ||
| OperationData::path | public | function | Gets path. | 
| OperationData::PATH | constant | ||
| OperationData::prepend | public | function | Gets prepend path. | 
| OperationData::PREPEND | constant | ||
| OperationData::__construct | public | function | OperationData constructor. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
