code: public function read($url)
      {
          $xml = $this->requestXml($url, "/channel.xml");
  
          $channelName = (string) $xml->name;
          $channelAlias = (string) $xml->suggestedalias;
  
          $supportedVersions = array_keys($this->readerMap);
          $selectedRestVersion = $this->selectRestVersion($xml, $supportedVersions);
          if (!$selectedRestVersion) {
              throw new \UnexpectedValueException(sprintf('PEAR repository %s does not supports any of %s protocols.', $url, implode(', ', $supportedVersions)));
          }
  
          $reader = $this->readerMap[$selectedRestVersion['version']];
          $packageDefinitions = $reader->read($selectedRestVersion['baseUrl']);
  
          return new ChannelInfo($channelName, $channelAlias, $packageDefinitions);
      }
docs: Reads PEAR channel through REST interface and builds list of packages
  
  @param string $url PEAR Channel url
  @throws \UnexpectedValueException
  @return ChannelInfo