* @author Konstantin Kudryashov * @author Jordi Boggiano */ interface RepositoryInterface extends \Countable { public const SEARCH_FULLTEXT = 0; public const SEARCH_NAME = 1; public const SEARCH_VENDOR = 2; /** * Checks if specified package registered (installed). * * @param PackageInterface $package package instance * * @return bool */ public function hasPackage(PackageInterface $package); /** * Searches for the first match of a package by name and version. * * @param string $name package name * @param string|ConstraintInterface $constraint package version or version constraint to match against * * @return BasePackage|null */ public function findPackage(string $name, $constraint); /** * Searches for all packages matching a name and optionally a version. * * @param string $name package name * @param string|ConstraintInterface $constraint package version or version constraint to match against * * @return BasePackage[] */ public function findPackages(string $name, $constraint = null); /** * Returns list of registered packages. * * @return BasePackage[] */ public function getPackages(); /** * Returns list of registered packages with the supplied name * * - The packages returned are the packages found which match the constraints, acceptable stability and stability flags provided * - The namesFound returned are names which should be considered as canonically found in this repository, that should not be looked up in any further lower priority repositories * * @param ConstraintInterface[] $packageNameMap package names pointing to constraints * @param array $acceptableStabilities array of stability => BasePackage::STABILITY_* value * @param array $stabilityFlags an array of package name => BasePackage::STABILITY_* value * @param array> $alreadyLoaded an array of package name => package version => package * * @return array * * @phpstan-param array $packageNameMap * @phpstan-return array{namesFound: array, packages: array} */ public function loadPackages( array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = [], ); /** * Searches the repository for packages containing the query * * @param string $query search query, for SEARCH_NAME and SEARCH_VENDOR regular expressions metacharacters are supported by implementations, and user input should be escaped through preg_quote by callers * @param int $mode a set of SEARCH_* constants to search on, implementations should do a best effort only, default is SEARCH_FULLTEXT * @param ?string $type The type of package to search for. Defaults to all types of packages * * @return array[] an array of array('name' => '...', 'description' => '...'|null, 'abandoned' => 'string'|true|unset) For SEARCH_VENDOR the name will be in "vendor" form * @phpstan-return list */ public function search(string $query, int $mode = 0, ?string $type = null); /** * Returns a list of packages providing a given package name * * Packages which have the same name as $packageName should not be returned, only those that have a "provide" on it. * * @param string $packageName package name which must be provided * * @return array[] an array with the provider name as key and value of array('name' => '...', 'description' => '...', 'type' => '...') * @phpstan-return array */ public function getProviders(string $packageName); /** * Returns a name representing this repository to the user * * This is best effort and definitely can not always be very precise * * @return string */ public function getRepoName(); } __halt_compiler();----SIGNATURE:----jBSdaysXckijzW9NFQOKSJatFFm9FrgyyTCDeeEMfgXzXp42ZZftQQR0USL+xYv5GH01neevsigjaOOXqFncl7iLPmSlnMnB1yDq6YhwzDHKAVcZO1r2l5oqP9E5bLyqCPOSUFO4va79m6EhyTHt5Ut9UZ0j1RpoMeQuCZs/KSzXZnPyJYr7LeKW4vUs5e+yqRDdS73w/kI7E1HT+/a24DD9PZwWXO/vnnvgu1OX7g1F25FDRxOKtlOS/CmHzCYpFhV9ZUzpwrnDdaL66UBCnyQ53FsVsLTef0QHpdyZ0MwV/k1Wwpa22HMFRwLH7zVCNYSBGtRm1rbOWyEzTi3OxB06WIRFRGZp2EGPJUYvGxgcehzjpuzfaNtJoJ4vqx5Hn9xl+20M5ZyZGd80S1SlB9aV/K/TQBJWq993WP26zS+JEXEvZk0ppLBGh52SAkBOdtDWqNTQSGBzpZc8L4OIN/ZaiuKFZSVrm4Nwt7KlTVECrlRrVYgHSQh8zTH3GuDXImib0aBuE1VlueWlImbEeAeO/DyL67oc282HZoFNw2vQwYpAYgoxi5lwuBkBoeJdn1v2hW943T7KYAD9ykDtz2FkKcSKqxzigjmpjyvSvwYPMZuu7moDbprEpHF1+d53b5rbipH0f3IXBC8AxDnOPTiB/GRmXm7i/4U/KSNqf/0=----ATTACHMENT:----NTM1MDk1MDY0MjEwMjU0NiAzOTMzODExNTc0OTUwNjI2IDQ0OTA0NjExNDYyODAzNjY=