public function getPrettyString(Pool $pool, array $installedMap = array()) { $ruleText = ''; foreach ($this->literals as $i => $literal) { if ($i != 0) { $ruleText .= '|'; } $ruleText .= $pool->literalToPrettyString($literal, $installedMap); } switch ($this->getReason()) { case self::RULE_INTERNAL_ALLOW_UPDATE: return $ruleText; case self::RULE_JOB_INSTALL: return "Install command rule ({$ruleText})"; case self::RULE_JOB_REMOVE: return "Remove command rule ({$ruleText})"; case self::RULE_PACKAGE_CONFLICT: $package1 = $pool->literalToPackage($this->literals[0]); $package2 = $pool->literalToPackage($this->literals[1]); return $package1->getPrettyString() . ' conflicts with ' . $this->formatPackagesUnique($pool, array($package2)) . '.'; case self::RULE_PACKAGE_REQUIRES: $literals = $this->literals; $sourceLiteral = array_shift($literals); $sourcePackage = $pool->literalToPackage($sourceLiteral); $requires = array(); foreach ($literals as $literal) { $requires[] = $pool->literalToPackage($literal); } $text = $this->reasonData->getPrettyString($sourcePackage); if ($requires) { $text .= ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $requires) . '.'; } else { $targetName = $this->reasonData->getTarget(); if ($targetName === 'php' || $targetName === 'php-64bit' || $targetName === 'hhvm') { // handle php/hhvm if (defined('HHVM_VERSION')) { return $text . ' -> your HHVM version does not satisfy that requirement.'; } elseif ($targetName === 'hhvm') { return $text . ' -> you are running this with PHP and not HHVM.'; } else { $packages = $pool->whatProvides($targetName); $package = count($packages) ? current($packages) : phpversion(); if (!$package instanceof CompletePackage) { return $text . ' -> your PHP version (' . phpversion() . ') does not satisfy that requirement.'; } $extra = $package->getExtra(); if (!empty($extra['config.platform'])) { $text .= ' -> your PHP version (' . phpversion() . ') overriden by "config.platform.php" version (' . $package->getPrettyVersion() . ') does not satisfy that requirement.'; } else { $text .= ' -> your PHP version (' . $package->getPrettyVersion() . ') does not satisfy that requirement.'; } return $text; } } elseif (0 === strpos($targetName, 'ext-')) { // handle php extensions $ext = substr($targetName, 4); $error = extension_loaded($ext) ? 'has the wrong version (' . (phpversion($ext) ?: '0') . ') installed' : 'is missing from your system'; return $text . ' -> the requested PHP extension ' . $ext . ' ' . $error . '.'; } elseif (0 === strpos($targetName, 'lib-')) { // handle linked libs $lib = substr($targetName, 4); return $text . ' -> the requested linked library ' . $lib . ' has the wrong version installed or is missing from your system, make sure to have the extension providing it.'; } else { return $text . ' -> no matching package found.'; } } return $text; case self::RULE_PACKAGE_OBSOLETES: return $ruleText; case self::RULE_INSTALLED_PACKAGE_OBSOLETES: return $ruleText; case self::RULE_PACKAGE_SAME_NAME: return 'Can only install one of: ' . $this->formatPackagesUnique($pool, $this->literals) . '.'; case self::RULE_PACKAGE_IMPLICIT_OBSOLETES: return $ruleText; case self::RULE_LEARNED: return 'Conclusion: ' . $ruleText; case self::RULE_PACKAGE_ALIAS: return $ruleText; default: return '(' . $ruleText . ')'; } }