You are here

class Callback in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/migrate/src/Plugin/migrate/process/Callback.php \Drupal\migrate\Plugin\migrate\process\Callback

Passes the source value to a callback.

The callback process plugin allows simple processing of the value, such as strtolower(). To pass more than one argument, pass an array as the source and set the unpack_source option.

Available configuration keys:

  • callable: The name of the callable method.
  • unpack_source: (optional) Whether to interpret the source as an array of arguments.

Examples:


process:
  destination_field:
    plugin: callback
    callable: mb_strtolower
    source: source_field

An example where the callable is a static method in a class:


process:
  destination_field:
    plugin: callback
    callable:
      - '\Drupal\Component\Utility\Unicode'
      - ucfirst
    source: source_field

An example where the callback accepts more than one argument:


source:
  plugin: source_plugin_goes_here
  constants:
    slash: /
process:
  field_link_url:
    plugin: callback
    callable: rtrim
    unpack_source: true
    source:
      - url
      - constants/slash

This will remove the trailing '/', if any, from a URL.

Plugin annotation


@MigrateProcessPlugin(
  id = "callback"
)

Hierarchy

Expanded class hierarchy of Callback

See also

\Drupal\migrate\Plugin\MigrateProcessInterface

1 file declares its use of Callback
CallbackTest.php in core/modules/migrate/tests/src/Unit/process/CallbackTest.php
3 string references to 'Callback'
ConstraintManager::registerDefinitions in core/lib/Drupal/Core/Validation/ConstraintManager.php
Callback for registering definitions for constraints shipped with Symfony.
RecursiveContextualValidatorTest::setupTypedData in core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php
Setups a typed data object used for test purposes.
RecursiveContextualValidatorTest::testBasicValidateWithConstraint in core/tests/Drupal/Tests/Core/TypedData/RecursiveContextualValidatorTest.php
@covers ::validate

File

core/modules/migrate/src/Plugin/migrate/process/Callback.php, line 69

Namespace

Drupal\migrate\Plugin\migrate\process
View source
class Callback extends ProcessPluginBase {

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
    if (!isset($configuration['callable'])) {
      throw new \InvalidArgumentException('The "callable" must be set.');
    }
    elseif (!is_callable($configuration['callable'])) {
      throw new \InvalidArgumentException('The "callable" must be a valid function or method.');
    }
    parent::__construct($configuration, $plugin_id, $plugin_definition);
  }

  /**
   * {@inheritdoc}
   */
  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
    if (!empty($this->configuration['unpack_source'])) {
      if (!is_array($value)) {
        throw new MigrateException(sprintf("When 'unpack_source' is set, the source must be an array. Instead it was of type '%s'", gettype($value)));
      }
      return call_user_func($this->configuration['callable'], ...$value);
    }
    return call_user_func($this->configuration['callable'], $value);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Callback::transform public function Performs the associated process. Overrides ProcessPluginBase::transform
Callback::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase::__construct
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 27
MessengerTrait::messenger public function Gets the messenger. 27
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 2
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
ProcessPluginBase::multiple public function Indicates whether the returned value requires multiple handling. Overrides MigrateProcessInterface::multiple 3
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.