Service Collector

Categories

Component ID

2870658

Component name

Service Collector

Component type

module

Maintenance status

Development status

Component security advisory coverage

covered

Downloads

66

Component created

Component changed

Component body

Module aims to simplify routines of collecting and modifying the data via module_invoke() and drupal_alter().

Example

use DrupalpinmapSearcherSearcherInterface;
use DrupalpinmapSearcherCoordinates;
use DrupalpinmapSearcherName;

/**
 * Implements hook_pinmap_searchers().
 */
function pinmap_pinmap_searchers() {
  $searchers = [];

  $searchers['coordinates'] = Coordinates::class;
  $searchers['name'] = Name::class;

  return $searchers;
}

/**
 * Implements hook_pinmap_searchers_alter().
 */
function pinmap_pinmap_searchers_alter(array &$searchers) {
  // This entry will be removed due to it incorrectness.
  $searchers['coordinates'] = 'Coordinates::class';
}

/**
 * Returns list of registered searchers.
 *
 * @return SearcherInterface[]
 *   List of registered searchers.
 */
function pinmap_searchers() {
  return service_collector(__FUNCTION__, function ($name, $class) {
    if (!is_subclass_of($class, SearcherInterface::class, TRUE)) {
      throw new InvalidArgumentException(sprintf('Searcher "%s" must implement the "%s" interface', $class, SearcherInterface::class));
    }
  });
}