1
0
Fork 0

added findPackage() method to the RepositoryManager and RepositoryInterface

pull/40/head
everzet 2011-10-01 15:33:25 +03:00
parent 21191ffa00
commit cc2f2b79ca
3 changed files with 44 additions and 0 deletions

View File

@ -23,6 +23,23 @@ class ArrayRepository implements RepositoryInterface
{ {
protected $packages; protected $packages;
/**
* Searches for a package by it's name and version (if has one).
*
* @param string $name package name
* @param string $version package version
*
* @return PackageInterface|null
*/
public function findPackage($name, $version)
{
foreach ($this->getPackages() as $package) {
if ($name === $package->getName() && $version === $package->getVersion()) {
return $package;
}
}
}
/** /**
* Checks if specified package in this repository. * Checks if specified package in this repository.
* *

View File

@ -31,6 +31,16 @@ interface RepositoryInterface extends \Countable
*/ */
function hasPackage(PackageInterface $package); function hasPackage(PackageInterface $package);
/**
* Searches for a package by it's name and version (if has one).
*
* @param string $name package name
* @param string $version package version
*
* @return PackageInterface|null
*/
function findPackage($name, $version);
/** /**
* Returns list of registered packages. * Returns list of registered packages.
* *

View File

@ -22,6 +22,23 @@ class RepositoryManager
private $localRepository; private $localRepository;
private $repositories = array(); private $repositories = array();
/**
* Searches for a package by it's name and version in managed repositories.
*
* @param string $name package name
* @param string $version package version
*
* @return PackageInterface|null
*/
public function findPackage($name, $version)
{
foreach ($this->repositories as $repository) {
if ($package = $repository->findPackage($name, $version)) {
return $package;
}
}
}
/** /**
* Sets repository with specific name. * Sets repository with specific name.
* *