* @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:----P2fWfPpOPM6GEMnHFJFwq8GGEA7nVcP3qu3ZtW9ryjbn52xYpWLcg3SmQvmJoLUUooZOXsZjGT+omfbnRhT0cwK7X0pKU9Dzv8rEqWLL6CgGRdAKLVeyaRr8mZPU6PVetpQ842IALl0AdAFhgq62KKbk+cZABzsSR9Rm8YUYBfgiev4iR88YxRrVSRKNb3cIxU9nuNij7BWXEoyrupTQ7Uuc0fs21Jox2R1TgHJmBwNkit2tlGUfyuwW0H2xLUcqLUQB6VqEynSa2mzixkUb9TqzIHS4u7dQ+EoxizhtCrqASRIxHUt9EZCutn3fzVQoOVWis4MqFdr6CzojWYOosqf3EFdYgerwyPkP9FmtPkECZmWJMX5FT7//yW8K/vsnG5h7bmH3WT3fyNS0DrcOGIS82x22v+ICI6DBG5x1ZiADylz4NFPakNUqxNQXYaMh1A+89WjCixeSQ1k16TTYpT4EAeD7b51CWRM73mGpJ8l7/8zqHAN8TfMpnKn58QUS41d3IYoyuxxB3MpJLIlKfX5t9l0SYYs4SyZMA1V4ta7P6MbWAYezlV1u7uNT52r8BJlAmuLlqfamk6Fok7bNOAk5lSoOzXsP35P9sQXyZofP5C8qtI5HYhUC01MxF7mfWgB8rVAS6Qe7/Q82UtptQAJ6ufrwdJFtGsS5fEfey8w=----ATTACHMENT:----Mzc4ODE1MDgyODQ1MTUzNCAxOTA2Nzk5NjI3NTczOTg3IDU3MDgyMDkyNTA3NjE0NjI=