当前位置: 首页>>代码示例>>PHP>>正文


PHP PackageInterface::getTransportOptions方法代码示例

本文整理汇总了PHP中Composer\Package\PackageInterface::getTransportOptions方法的典型用法代码示例。如果您正苦于以下问题:PHP PackageInterface::getTransportOptions方法的具体用法?PHP PackageInterface::getTransportOptions怎么用?PHP PackageInterface::getTransportOptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Composer\Package\PackageInterface的用法示例。


在下文中一共展示了PackageInterface::getTransportOptions方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: download

 /**
  * {@inheritdoc}
  */
 public function download(PackageInterface $package, $path)
 {
     $url = $package->getDistUrl();
     $realUrl = realpath($url);
     if (false === $realUrl || !file_exists($realUrl) || !is_dir($realUrl)) {
         throw new \RuntimeException(sprintf('Source path "%s" is not found for package %s', $url, $package->getName()));
     }
     if (strpos(realpath($path) . DIRECTORY_SEPARATOR, $realUrl . DIRECTORY_SEPARATOR) === 0) {
         throw new \RuntimeException(sprintf('Package %s cannot install to "%s" inside its source at "%s"', $package->getName(), realpath($path), $realUrl));
     }
     // Get the transport options with default values
     $transportOptions = $package->getTransportOptions() + array('symlink' => null);
     // When symlink transport option is null, both symlink and mirror are allowed
     $currentStrategy = self::STRATEGY_SYMLINK;
     $allowedStrategies = array(self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR);
     if (true === $transportOptions['symlink']) {
         $currentStrategy = self::STRATEGY_SYMLINK;
         $allowedStrategies = array(self::STRATEGY_SYMLINK);
     } elseif (false === $transportOptions['symlink']) {
         $currentStrategy = self::STRATEGY_MIRROR;
         $allowedStrategies = array(self::STRATEGY_MIRROR);
     }
     $fileSystem = new Filesystem();
     $this->filesystem->removeDirectory($path);
     $this->io->writeError(sprintf('  - Installing <info>%s</info> (<comment>%s</comment>)', $package->getName(), $package->getFullPrettyVersion()));
     if (self::STRATEGY_SYMLINK == $currentStrategy) {
         try {
             if (Platform::isWindows()) {
                 // Implement symlinks as NTFS junctions on Windows
                 $this->filesystem->junction($realUrl, $path);
                 $this->io->writeError(sprintf('    Junctioned from %s', $url));
             } else {
                 $absolutePath = $path;
                 if (!$this->filesystem->isAbsolutePath($absolutePath)) {
                     $absolutePath = getcwd() . DIRECTORY_SEPARATOR . $path;
                 }
                 $shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl);
                 $path = rtrim($path, "/");
                 $fileSystem->symlink($shortestPath, $path);
                 $this->io->writeError(sprintf('    Symlinked from %s', $url));
             }
         } catch (IOException $e) {
             if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) {
                 $this->io->writeError('    <error>Symlink failed, fallback to use mirroring!</error>');
                 $currentStrategy = self::STRATEGY_MIRROR;
             } else {
                 throw new \RuntimeException(sprintf('Symlink from "%s" to "%s" failed!', $realUrl, $path));
             }
         }
     }
     // Fallback if symlink failed or if symlink is not allowed for the package
     if (self::STRATEGY_MIRROR == $currentStrategy) {
         $fileSystem->mirror($realUrl, $path);
         $this->io->writeError(sprintf('    Mirrored from %s', $url));
     }
     $this->io->writeError('');
 }
开发者ID:dazzle-libraries,项目名称:composer,代码行数:60,代码来源:PathDownloader.php

示例2: getTransportOptions

 /**
  * {@inheritdoc}
  */
 public function getTransportOptions()
 {
     return $this->package->getTransportOptions();
 }
开发者ID:tenside,项目名称:core,代码行数:7,代码来源:VersionedPackage.php

示例3: getTransportOptions

 public function getTransportOptions()
 {
     return $this->aliasOf->getTransportOptions();
 }
开发者ID:neon64,项目名称:composer,代码行数:4,代码来源:AliasPackage.php


注:本文中的Composer\Package\PackageInterface::getTransportOptions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。