You are here

class LocalDirectoryAdapter in X Autoload 7.4

Same name and namespace in other branches
  1. 7.5 src/Adapter/LocalDirectoryAdapter.php \Drupal\xautoload\Adapter\LocalDirectoryAdapter

An instance of this class is passed around to implementations of hook_xautoload(). It acts as a wrapper around the ClassFinder, to register stuff.

Hierarchy

Expanded class hierarchy of LocalDirectoryAdapter

1 file declares its use of LocalDirectoryAdapter
hookXautoload.php in legacy/lib/InjectedAPI/hookXautoload.php

File

lib/Adapter/LocalDirectoryAdapter.php, line 13

Namespace

Drupal\xautoload\Adapter
View source
class LocalDirectoryAdapter implements ClassFinderAdapterInterface {

  /**
   * @var string
   */
  protected $localDirectory;

  /**
   * @var ClassFinderAdapter
   */
  protected $master;

  /**
   * @param ClassFinderAdapter $adapter
   *   The class finder object.
   * @param string $localDirectory ;
   */
  function __construct($adapter, $localDirectory) {

    // parent::__construct($adapter->finder, $adapter->getClassmapGenerator());
    $this->master = $adapter;
    $this->localDirectory = $localDirectory;
  }

  /**
   * @return ClassFinderAdapter
   */
  function absolute() {
    return $this->master;
  }

  //                                                                   Discovery
  // ---------------------------------------------------------------------------

  /**
   * @param string[] $paths
   *   File paths or wildcard paths for class discovery.
   * @param bool $relative
   */
  function addClassmapSources($paths, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($paths);
    $this->master
      ->addClassmapSources($paths);
  }

  //                                                              Composer tools
  // ---------------------------------------------------------------------------

  /**
   * Scan a composer.json file provided by a Composer package.
   *
   * @param string $file
   * @param bool $relative
   *
   * @throws \Exception
   */
  function composerJson($file, $relative = TRUE) {
    $relative && ($file = $this->localDirectory . $file);
    $json = ComposerJson::createFromFile($file);
    $json
      ->writeToAdapter($this->master);
  }

  /**
   * Scan a directory containing Composer-generated autoload files.
   *
   * @param string $dir
   *   Directory to look for Composer-generated files. Typically this is the
   *   ../vendor/composer dir.
   * @param bool $relative
   */
  function composerDir($dir, $relative = TRUE) {
    $relative && ($dir = $this->localDirectory . $dir);
    $dir = ComposerDir::create($dir);
    $dir
      ->writeToAdapter($this->master);
  }

  //                                                      multiple PSR-0 / PSR-4
  // ---------------------------------------------------------------------------

  /**
   * Add multiple PSR-0 namespaces
   *
   * @param array $prefixes
   * @param bool $relative
   */
  function addMultiplePsr0(array $prefixes, $relative = TRUE) {
    $relative && $this
      ->prependMultiple($prefixes);
    $this->master
      ->addMultiplePsr4($prefixes);
  }

  /**
   * @param array $map
   * @param bool $relative
   */
  function addMultiplePsr4(array $map, $relative = TRUE) {
    $relative && $this
      ->prependMultiple($map);
    $this->master
      ->addMultiplePsr4($map);
  }

  //                                                        Composer ClassLoader
  // ---------------------------------------------------------------------------

  /**
   * @param array $classMap
   * @param bool $relative
   */
  function addClassMap(array $classMap, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($classMap);
    $this->master
      ->addClassMap($classMap);
  }

  /**
   * @param string $prefix
   * @param string|\string[] $paths
   * @param bool $relative
   */
  function add($prefix, $paths, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($paths);
    $this->master
      ->add($prefix, $paths);
  }

  /**
   * @param string $prefix
   * @param string|\string[] $paths
   * @param bool $relative
   */
  function addPsr0($prefix, $paths, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($paths);
    $this->master
      ->add($prefix, $paths);
  }

  /**
   * @param string $prefix
   * @param string|\string[] $paths
   * @param bool $relative
   */
  function addPsr4($prefix, $paths, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($paths);
    $this->master
      ->addPsr4($prefix, $paths);
  }

  //                                                      More convenience stuff
  // ---------------------------------------------------------------------------

  /**
   * @param string $prefix
   * @param string|\string[] $paths
   * @param bool $relative
   */
  function addNamespacePsr0($prefix, $paths, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($paths);
    $this->master
      ->addNamespacePsr0($prefix, $paths);
  }

  /**
   * @param $prefix
   * @param $paths
   * @param bool $relative
   */
  function addPear($prefix, $paths, $relative = TRUE) {
    $relative && $this
      ->prependToPaths($paths);
    $this->master
      ->addPear($prefix, $paths);
  }

  //                                                      Relative path handling
  // ---------------------------------------------------------------------------

  /**
   * @param array $map
   */
  protected function prependMultiple(array &$map) {
    foreach ($map as &$paths) {
      $paths = (array) $paths;
      foreach ($paths as &$path) {
        $path = $this->localDirectory . $path;
      }
    }
  }

  /**
   * @param string|string[] &$paths
   */
  protected function prependToPaths(&$paths) {
    if (!is_array($paths)) {
      $paths = $this->localDirectory . $paths;
    }
    else {
      foreach ($paths as &$path) {
        $path = $this->localDirectory . $path;
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
LocalDirectoryAdapter::$localDirectory protected property
LocalDirectoryAdapter::$master protected property
LocalDirectoryAdapter::absolute function
LocalDirectoryAdapter::add function Overrides CommonRegistrationInterface::add
LocalDirectoryAdapter::addClassMap function Overrides CommonRegistrationInterface::addClassMap
LocalDirectoryAdapter::addClassmapSources function Overrides ClassFinderAdapterInterface::addClassmapSources
LocalDirectoryAdapter::addMultiplePsr0 function Add multiple PSR-0 namespaces Overrides ClassFinderAdapterInterface::addMultiplePsr0
LocalDirectoryAdapter::addMultiplePsr4 function Overrides ClassFinderAdapterInterface::addMultiplePsr4
LocalDirectoryAdapter::addNamespacePsr0 function Overrides CommonRegistrationInterface::addNamespacePsr0
LocalDirectoryAdapter::addPear function Overrides CommonRegistrationInterface::addPear
LocalDirectoryAdapter::addPsr0 function Overrides CommonRegistrationInterface::addPsr0
LocalDirectoryAdapter::addPsr4 function Overrides CommonRegistrationInterface::addPsr4
LocalDirectoryAdapter::composerDir function Scan a directory containing Composer-generated autoload files. Overrides ClassFinderAdapterInterface::composerDir
LocalDirectoryAdapter::composerJson function Scan a composer.json file provided by a Composer package. Overrides ClassFinderAdapterInterface::composerJson
LocalDirectoryAdapter::prependMultiple protected function
LocalDirectoryAdapter::prependToPaths protected function
LocalDirectoryAdapter::__construct function 1