[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/php-ai-client/third-party/Http/Discovery/Strategy/ -> PuliBetaStrategy.php (source)

   1  <?php
   2  
   3  namespace WordPress\AiClientDependencies\Http\Discovery\Strategy;
   4  
   5  use WordPress\AiClientDependencies\Http\Discovery\ClassDiscovery;
   6  use WordPress\AiClientDependencies\Http\Discovery\Exception\PuliUnavailableException;
   7  use WordPress\AiClientDependencies\Puli\Discovery\Api\Discovery;
   8  use WordPress\AiClientDependencies\Puli\GeneratedPuliFactory;
   9  /**
  10   * Find candidates using Puli.
  11   *
  12   * @internal
  13   *
  14   * @final
  15   *
  16   * @author David de Boer <david@ddeboer.nl>
  17   * @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
  18   */
  19  class PuliBetaStrategy implements DiscoveryStrategy
  20  {
  21      /**
  22       * @var GeneratedPuliFactory
  23       */
  24      protected static $puliFactory;
  25      /**
  26       * @var Discovery
  27       */
  28      protected static $puliDiscovery;
  29      /**
  30       * @return GeneratedPuliFactory
  31       *
  32       * @throws PuliUnavailableException
  33       */
  34      private static function getPuliFactory()
  35      {
  36          if (null === self::$puliFactory) {
  37              if (!defined('PULI_FACTORY_CLASS')) {
  38                  throw new PuliUnavailableException('Puli Factory is not available');
  39              }
  40              $puliFactoryClass = PULI_FACTORY_CLASS;
  41              if (!ClassDiscovery::safeClassExists($puliFactoryClass)) {
  42                  throw new PuliUnavailableException('Puli Factory class does not exist');
  43              }
  44              self::$puliFactory = new $puliFactoryClass();
  45          }
  46          return self::$puliFactory;
  47      }
  48      /**
  49       * Returns the Puli discovery layer.
  50       *
  51       * @return Discovery
  52       *
  53       * @throws PuliUnavailableException
  54       */
  55      private static function getPuliDiscovery()
  56      {
  57          if (!isset(self::$puliDiscovery)) {
  58              $factory = self::getPuliFactory();
  59              $repository = $factory->createRepository();
  60              self::$puliDiscovery = $factory->createDiscovery($repository);
  61          }
  62          return self::$puliDiscovery;
  63      }
  64      public static function getCandidates($type)
  65      {
  66          $returnData = [];
  67          $bindings = self::getPuliDiscovery()->findBindings($type);
  68          foreach ($bindings as $binding) {
  69              $condition = \true;
  70              if ($binding->hasParameterValue('depends')) {
  71                  $condition = $binding->getParameterValue('depends');
  72              }
  73              $returnData[] = ['class' => $binding->getClassName(), 'condition' => $condition];
  74          }
  75          return $returnData;
  76      }
  77  }


Generated : Sat Jun 13 09:38:55 2026 Cross-referenced by PHPXref