class PuliBetaStrategy
Find candidates using Puli.
@internal
@final
@author David de Boer <david@ddeboer.nl> @author Márk Sági-Kazár <mark.sagikazar@gmail.com>
Hierarchy
- class \Http\Discovery\Strategy\PuliBetaStrategy implements \Http\Discovery\Strategy\DiscoveryStrategy
Expanded class hierarchy of PuliBetaStrategy
File
-
vendor/
php-http/ discovery/ src/ Strategy/ PuliBetaStrategy.php, line 20
Namespace
Http\Discovery\StrategyView source
class PuliBetaStrategy implements DiscoveryStrategy {
/**
* @var GeneratedPuliFactory
*/
protected static $puliFactory;
/**
* @var Discovery
*/
protected static $puliDiscovery;
/**
* @return GeneratedPuliFactory
*
* @throws PuliUnavailableException
*/
private static function getPuliFactory() {
if (null === self::$puliFactory) {
if (!defined('PULI_FACTORY_CLASS')) {
throw new PuliUnavailableException('Puli Factory is not available');
}
$puliFactoryClass = PULI_FACTORY_CLASS;
if (!ClassDiscovery::safeClassExists($puliFactoryClass)) {
throw new PuliUnavailableException('Puli Factory class does not exist');
}
self::$puliFactory = new $puliFactoryClass();
}
return self::$puliFactory;
}
/**
* Returns the Puli discovery layer.
*
* @return Discovery
*
* @throws PuliUnavailableException
*/
private static function getPuliDiscovery() {
if (!isset(self::$puliDiscovery)) {
$factory = self::getPuliFactory();
$repository = $factory->createRepository();
self::$puliDiscovery = $factory->createDiscovery($repository);
}
return self::$puliDiscovery;
}
public static function getCandidates($type) {
$returnData = [];
$bindings = self::getPuliDiscovery()->findBindings($type);
foreach ($bindings as $binding) {
$condition = true;
if ($binding->hasParameterValue('depends')) {
$condition = $binding->getParameterValue('depends');
}
$returnData[] = [
'class' => $binding->getClassName(),
'condition' => $condition,
];
}
return $returnData;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
PuliBetaStrategy::$puliDiscovery | protected static | property | ||
PuliBetaStrategy::$puliFactory | protected static | property | ||
PuliBetaStrategy::getCandidates | public static | function | Find a resource of a specific type. | Overrides DiscoveryStrategy::getCandidates |
PuliBetaStrategy::getPuliDiscovery | private static | function | Returns the Puli discovery layer. | |
PuliBetaStrategy::getPuliFactory | private static | function |