function ArrayRepository::search
@inheritDoc
Overrides RepositoryInterface::search
4 calls to ArrayRepository::search()
- ComposerRepository::search in vendor/
composer/ composer/ src/ Composer/ Repository/ ComposerRepository.php - @inheritDoc
- ComposerRepository::search in vendor/
composer/ composer/ src/ Composer/ Repository/ ComposerRepository.php - @inheritDoc
- PlatformRepository::search in vendor/
composer/ composer/ src/ Composer/ Repository/ PlatformRepository.php - @inheritDoc
- PlatformRepository::search in vendor/
composer/ composer/ src/ Composer/ Repository/ PlatformRepository.php - @inheritDoc
2 methods override ArrayRepository::search()
- ComposerRepository::search in vendor/
composer/ composer/ src/ Composer/ Repository/ ComposerRepository.php - @inheritDoc
- PlatformRepository::search in vendor/
composer/ composer/ src/ Composer/ Repository/ PlatformRepository.php - @inheritDoc
File
-
vendor/
composer/ composer/ src/ Composer/ Repository/ ArrayRepository.php, line 149
Class
- ArrayRepository
- A repository implementation that simply stores packages in an array
Namespace
Composer\RepositoryCode
public function search(string $query, int $mode = 0, ?string $type = null) {
if ($mode === self::SEARCH_FULLTEXT) {
$regex = '{(?:' . implode('|', Preg::split('{\\s+}', preg_quote($query))) . ')}i';
}
else {
// vendor/name searches expect the caller to have preg_quoted the query
$regex = '{(?:' . implode('|', Preg::split('{\\s+}', $query)) . ')}i';
}
$matches = [];
foreach ($this->getPackages() as $package) {
$name = $package->getName();
if ($mode === self::SEARCH_VENDOR) {
[
$name,
] = explode('/', $name);
}
if (isset($matches[$name])) {
continue;
}
if (null !== $type && $package->getType() !== $type) {
continue;
}
if (Preg::isMatch($regex, $name) || $mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && Preg::isMatch($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) {
if ($mode === self::SEARCH_VENDOR) {
$matches[$name] = [
'name' => $name,
'description' => null,
];
}
else {
$matches[$name] = [
'name' => $package->getPrettyName(),
'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null,
];
if ($package instanceof CompletePackageInterface && $package->isAbandoned()) {
$matches[$name]['abandoned'] = $package->getReplacementPackage() ?: true;
}
}
}
}
return array_values($matches);
}