Open Journal Systems  3.3.0
PuliBetaStrategy.php
1 <?php
2 
4 
7 use Puli\Discovery\Api\Discovery;
8 use Puli\GeneratedPuliFactory;
9 
20 {
24  protected static $puliFactory;
25 
29  protected static $puliDiscovery;
30 
36  private static function getPuliFactory()
37  {
38  if (null === self::$puliFactory) {
39  if (!defined('PULI_FACTORY_CLASS')) {
40  throw new PuliUnavailableException('Puli Factory is not available');
41  }
42 
43  $puliFactoryClass = PULI_FACTORY_CLASS;
44 
45  if (!ClassDiscovery::safeClassExists($puliFactoryClass)) {
46  throw new PuliUnavailableException('Puli Factory class does not exist');
47  }
48 
49  self::$puliFactory = new $puliFactoryClass();
50  }
51 
52  return self::$puliFactory;
53  }
54 
62  private static function getPuliDiscovery()
63  {
64  if (!isset(self::$puliDiscovery)) {
65  $factory = self::getPuliFactory();
66  $repository = $factory->createRepository();
67 
68  self::$puliDiscovery = $factory->createDiscovery($repository);
69  }
70 
71  return self::$puliDiscovery;
72  }
73 
77  public static function getCandidates($type)
78  {
79  $returnData = [];
80  $bindings = self::getPuliDiscovery()->findBindings($type);
81 
82  foreach ($bindings as $binding) {
83  $condition = true;
84  if ($binding->hasParameterValue('depends')) {
85  $condition = $binding->getParameterValue('depends');
86  }
87  $returnData[] = ['class' => $binding->getClassName(), 'condition' => $condition];
88  }
89 
90  return $returnData;
91  }
92 }
Http\Discovery\Strategy
Definition: CommonClassesStrategy.php:3
Http\Discovery\ClassDiscovery
Definition: ClassDiscovery.php:17
Http\Discovery\Strategy\PuliBetaStrategy\$puliFactory
static $puliFactory
Definition: PuliBetaStrategy.php:24
Http\Discovery\Strategy\PuliBetaStrategy
Definition: PuliBetaStrategy.php:19
Http\Discovery\Strategy\PuliBetaStrategy\$puliDiscovery
static $puliDiscovery
Definition: PuliBetaStrategy.php:29
Http\Discovery\ClassDiscovery\safeClassExists
static safeClassExists($class)
Definition: ClassDiscovery.php:228
Http\Discovery\Exception\PuliUnavailableException
Definition: PuliUnavailableException.php:10
Http\Discovery\Strategy\PuliBetaStrategy\getCandidates
static getCandidates($type)
Definition: PuliBetaStrategy.php:77
Http\Discovery\Strategy\DiscoveryStrategy
Definition: DiscoveryStrategy.php:10