You are here

public function ClassLoader::addPsr4 in Mobile Number 7

Registers a set of PSR-4 directories for a given namespace, either appending or prepending to the ones previously set for this namespace.

Parameters

string $prefix: The prefix/namespace, with trailing '\\'.

array|string $paths: The PSR-4 base directories.

bool $prepend: Whether to prepend the directories.

Throws

\InvalidArgumentException

File

include/ClassLoader.php, line 180

Class

ClassLoader
ClassLoader implements a PSR-0, PSR-4 and classmap class loader.

Namespace

mobile_number

Code

public function addPsr4($prefix, $paths, $prepend = FALSE) {
  if (!$prefix) {

    // Register directories for the root namespace.
    if ($prepend) {
      $this->fallbackDirsPsr4 = array_merge((array) $paths, $this->fallbackDirsPsr4);
    }
    else {
      $this->fallbackDirsPsr4 = array_merge($this->fallbackDirsPsr4, (array) $paths);
    }
  }
  elseif (!isset($this->prefixDirsPsr4[$prefix])) {

    // Register directories for a new namespace.
    $length = strlen($prefix);
    if ('\\' !== $prefix[$length - 1]) {
      throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
    }
    $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
    $this->prefixDirsPsr4[$prefix] = (array) $paths;
  }
  elseif ($prepend) {

    // Prepend directories for an already registered namespace.
    $this->prefixDirsPsr4[$prefix] = array_merge((array) $paths, $this->prefixDirsPsr4[$prefix]);
  }
  else {

    // Append directories for an already registered namespace.
    $this->prefixDirsPsr4[$prefix] = array_merge($this->prefixDirsPsr4[$prefix], (array) $paths);
  }
}