function InstalledPackage::getProjectName

Returns the Drupal project name for this package.

This assumes that drupal.org adds a `project` key to every `.info.yml` file in the package, regardless of where they are in the package's directory structure. The package name is irrelevant except for checking that the vendor is `drupal`. For example, if the project key in the info file were `my_module`, and the package name were `drupal/whatever`, and this method would return `my_module`.

Return value

string|null The name of the Drupal project installed by this package, or NULL if:

  • The package type is not one of `drupal-module`, `drupal-theme`, or `drupal-profile`.
  • The package's vendor is not `drupal`.
  • The project name could not otherwise be determined.

Throws

\UnexpectedValueException Thrown if the same project name exists in more than one package.

File

core/modules/package_manager/src/InstalledPackage.php, line 71

Class

InstalledPackage
A value object that represents an installed Composer package.

Namespace

Drupal\package_manager

Code

public function getProjectName() : ?string {
  // Only consider packages which are packaged by drupal.org and will be
  // known to the core Update Status module.
  $drupal_package_types = [
    'drupal-module',
    'drupal-theme',
    'drupal-profile',
  ];
  if ($this->path && str_starts_with($this->name, 'drupal/') && in_array($this->type, $drupal_package_types, TRUE)) {
    return $this->scanForProjectName();
  }
  return NULL;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.