libraries); } /** * Register a library from the given path * * @param string $path * * @return Library The registered library */ public function registerPath($path) { $library = new Library($path); $this->libraries[] = $library; return $library; } /** * Check if a library with the given name has been registered * * Passing a version constraint also verifies that the library's version matches. * * @param string $name * @param string $version * * @return bool */ public function has($name, $version = null) { $library = $this->get($name); if ($library === null) { return false; } elseif ($version === null) { return true; } $operator = '='; if (preg_match('/^([<>=]{1,2})\s*v?((?:[\d.]+)(?:\D+)?)$/', $version, $match)) { $operator = $match[1]; $version = $match[2]; } return version_compare($library->getVersion(), $version, $operator); } /** * Get a library by name * * @param string $name * * @return Library|null */ public function get($name) { foreach ($this->libraries as $library) { if ($library->getName() === $name) { return $library; } } } }