Composition::has PHP Method

has() public static method

Usage examples : Composition::has('php', '5.3.*') // PHP version Composition::has('ext-memcache') // PHP extension Composition::has('vendor/package', '>2.1') // Package version
public static has ( type $packageName, type $prettyString = '*' ) : boolean
$packageName type The package name
$prettyString type An optional version constraint
return boolean Wether or not the package has been found.
    public static function has($packageName, $prettyString = '*')
    {
        if (null === self::$pool) {
            if (null === self::$rootDir) {
                self::$rootDir = getcwd();
                if (!file_exists(self::$rootDir . '/composer.json')) {
                    throw new \RuntimeException('Unable to guess the project root dir, please specify it manually using the Composition::setRootDir method.');
                }
            }
            $minimumStability = 'dev';
            $config = new Config();
            $file = new JsonFile(self::$rootDir . '/composer.json');
            if ($file->exists()) {
                $projectConfig = $file->read();
                $config->merge($projectConfig);
                if (isset($projectConfig['minimum-stability'])) {
                    $minimumStability = $projectConfig['minimum-stability'];
                }
            }
            $vendorDir = self::$rootDir . '/' . $config->get('vendor-dir');
            $pool = new Pool($minimumStability);
            $pool->addRepository(new PlatformRepository());
            $pool->addRepository(new InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed.json')));
            $pool->addRepository(new InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed_dev.json')));
            self::$pool = $pool;
        }
        $parser = new VersionParser();
        $constraint = $parser->parseConstraints($prettyString);
        $packages = self::$pool->whatProvides($packageName, $constraint);
        return empty($packages) ? false : true;
    }

Usage Example

Exemplo n.º 1
0
 public function testHasFromRequireDev()
 {
     $this->assertTrue(\Composition::has('doctrine/common', '>2.0'));
     $this->assertTrue(\Composition::has('doctrine/common', '2.3.*'));
     $this->assertFalse(\Composition::has('doctrine/common', '2.2.*'));
 }