Pārlūkot izejas kodu

PlatformRepository now knows curl and libxml versions

Christian Riesen 12 gadi atpakaļ
vecāks
revīzija
7b49b013ec
1 mainītis faili ar 46 papildinājumiem un 11 dzēšanām
  1. 46 11
      src/Composer/Repository/PlatformRepository.php

+ 46 - 11
src/Composer/Repository/PlatformRepository.php

@@ -40,17 +40,52 @@ class PlatformRepository extends ArrayRepository
         parent::addPackage($php);
 
         foreach (get_loaded_extensions() as $name) {
-            if (in_array($name, array('standard', 'Core'))) {
-                continue;
-            }
-
-            $reflExt = new \ReflectionExtension($name);
-            try {
-                $prettyVersion = $reflExt->getVersion();
-                $version = $versionParser->normalize($prettyVersion);
-            } catch (\UnexpectedValueException $e) {
-                $prettyVersion = '0';
-                $version = $versionParser->normalize($prettyVersion);
+            switch ($name) {
+                // Skipped "extensions"
+                case 'standard':
+                case 'Core':
+                    continue;
+                
+                // Curl exposes its version by the curl_version function
+                case 'curl':
+                    $curlversion = curl_version();
+                    $prettyVersion = $curlversion['version'];
+                    
+                    try {
+                        $version = $versionParser->normalize($prettyVersion);
+                    } catch (\UnexpectedValueException $e) {
+                        $prettyVersion = '0';
+                        $version = $versionParser->normalize($prettyVersion);
+                    }
+                    
+                    break;
+                    
+                    
+                case 'libxml':
+                    $prettyVersion = LIBXML_DOTTED_VERSION;
+                    
+                    try {
+                        $version = $versionParser->normalize($prettyVersion);
+                    } catch (\UnexpectedValueException $e) {
+                        $prettyVersion = '0';
+                        $version = $versionParser->normalize($prettyVersion);
+                    }
+                    
+                    break;
+                    
+                // All normal cases for standard extensions    
+                default:
+                    $reflExt = new \ReflectionExtension($name);
+                    
+                    try {
+                        $prettyVersion = $reflExt->getVersion();
+                        $version = $versionParser->normalize($prettyVersion);
+                    } catch (\UnexpectedValueException $e) {
+                        $prettyVersion = '0';
+                        $version = $versionParser->normalize($prettyVersion);
+                    }
+                    
+                    break;
             }
 
             $ext = new MemoryPackage('ext-'.$name, $version, $prettyVersion);