PhpBrew\Downloader\DownloadFactory::getInstance PHP Method

getInstance() public static method

public static getInstance ( CLIFramework\Logger $logger, OptionResult $options, string $downloader = null ) : BaseDownloader
$logger CLIFramework\Logger
$options GetOptionKit\OptionResult
$downloader string
return BaseDownloader
    public static function getInstance(Logger $logger, OptionResult $options, $downloader = null)
    {
        if (is_string($downloader)) {
            //if we specific a downloader class clearly, then it's the only choice
            if (class_exists($downloader) && is_subclass_of($downloader, 'PhpBrew\\Downloader\\BaseDownloader')) {
                return new $downloader($logger, $options);
            }
            $downloader = array($downloader);
        }
        if (empty($downloader)) {
            $downloader = array_keys(self::$availableDownloaders);
        }
        //if --downloader presents, we will use it as the first choice, even if the caller specific downloader by alias/array
        if ($options->has('downloader')) {
            $logger->info("Found --downloader option, try to use {$options->downloader} as default downloader.");
            $downloader = array_merge(array($options->downloader), $downloader);
        }
        $instance = self::create($logger, $options, $downloader);
        if ($instance === null) {
            $logger->debug('Downloader not found, falling back to command-based downloader.');
            //if all downloader not available, maybe we should throw exceptions here instead of returning null?
            return self::create($logger, $options, self::$fallbackDownloaders);
        } else {
            return $instance;
        }
    }

Usage Example

Exemplo n.º 1
0
 protected function getPackageXml($packageName, $version)
 {
     $channel = new PeclChannel($this->site);
     $baseUrl = $channel->getRestBaseUrl();
     $url = "{$baseUrl}/r/" . strtolower($packageName);
     $downloader = new CurlDownloader();
     $downloader = DownloadFactory::getInstance($this->logger, $this->options);
     // translate version name into numbers
     if (in_array($version, array('stable', 'latest', 'beta'))) {
         $stabilityTxtUrl = $url . '/' . $version . '.txt';
         if ($ret = $downloader->request($stabilityTxtUrl)) {
             $version = (string) $ret;
         } else {
             throw new Exception("Can not translate stability {$version} into exact version name.");
         }
     }
     $xmlUrl = $url . '/' . $version . '.xml';
     if ($ret = $downloader->request($xmlUrl)) {
         $dom = new DOMDocument('1.0');
         $dom->strictErrorChecking = false;
         $dom->preserveWhiteSpace = false;
         // $dom->resolveExternals = false;
         if (false === $dom->loadXml($ret)) {
             throw new Exception("Error in XMl document: {$url}");
         }
         return $dom;
     }
     return false;
 }
All Usage Examples Of PhpBrew\Downloader\DownloadFactory::getInstance