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


PHP RepositoryInterface::filterPackages方法代码示例

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


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

示例1: getPackage

 /**
  * finds a package by name and version if provided
  *
  * @param RepositoryInterface $installedRepo
  * @param RepositoryInterface $repos
  * @param string              $name
  * @param string              $version
  * @return array                     array(CompletePackageInterface, array of versions)
  * @throws \InvalidArgumentException
  */
 protected function getPackage(RepositoryInterface $installedRepo, RepositoryInterface $repos, $name, $version = null)
 {
     $name = strtolower($name);
     if ($version) {
         $parser = new VersionParser();
         $version = $parser->normalize($version);
     }
     $match = null;
     $matches = array();
     $repos->filterPackages(function ($package) use($name, $version, &$matches) {
         if ($package->getName() === $name) {
             $matches[] = $package;
         }
     }, 'Composer\\Package\\CompletePackage');
     if (null === $version) {
         // search for a locally installed version
         foreach ($matches as $package) {
             if ($installedRepo->hasPackage($package)) {
                 $match = $package;
                 break;
             }
         }
         if (!$match) {
             // fallback to the highest version
             foreach ($matches as $package) {
                 if (null === $match || version_compare($package->getVersion(), $match->getVersion(), '>=')) {
                     $match = $package;
                 }
             }
         }
     } else {
         // select the specified version
         foreach ($matches as $package) {
             if ($package->getVersion() === $version) {
                 $match = $package;
             }
         }
     }
     // build versions array
     $versions = array();
     foreach ($matches as $package) {
         $versions[$package->getPrettyVersion()] = $package->getVersion();
     }
     return array($match, $versions);
 }
开发者ID:nickelc,项目名称:composer,代码行数:55,代码来源:ShowCommand.php


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