class Factory
Same name in this branch
- 11.1.x vendor/phpunit/phpunit/src/Runner/Filter/Factory.php \PHPUnit\Runner\Filter\Factory
- 11.1.x vendor/phpunit/php-file-iterator/src/Factory.php \SebastianBergmann\FileIterator\Factory
- 11.1.x vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php \Prophecy\Comparator\Factory
- 11.1.x vendor/composer/composer/src/Composer/Factory.php \Composer\Factory
- 11.1.x vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php \JsonSchema\Constraints\Factory
Hierarchy
- class \SebastianBergmann\Comparator\Factory
Expanded class hierarchy of Factory
10 files declare their use of Factory
- ExactValueToken.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Argument/ Token/ ExactValueToken.php - Factory.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Comparator/ Factory.php - FactoryProvider.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Comparator/ FactoryProvider.php - IsEqual.php in vendor/
phpunit/ phpunit/ src/ Framework/ Constraint/ Equality/ IsEqual.php - IsEqualCanonicalizing.php in vendor/
phpunit/ phpunit/ src/ Framework/ Constraint/ Equality/ IsEqualCanonicalizing.php
5 string references to 'Factory'
- FileLoader::registerClasses in vendor/
symfony/ dependency-injection/ Loader/ FileLoader.php - Registers a set of classes as services using PSR-4 for discovery.
- XmlDumper::addService in vendor/
symfony/ dependency-injection/ Dumper/ XmlDumper.php - XmlFileLoader::parseDefinition in vendor/
symfony/ dependency-injection/ Loader/ XmlFileLoader.php - Parses an individual Definition.
- YamlFileLoader::parseCallable in vendor/
symfony/ dependency-injection/ Loader/ YamlFileLoader.php - YamlFileLoader::parseDefinition in vendor/
symfony/ dependency-injection/ Loader/ YamlFileLoader.php
File
-
vendor/
sebastian/ comparator/ src/ Factory.php, line 14
Namespace
SebastianBergmann\ComparatorView source
final class Factory {
private static ?Factory $instance = null;
/**
* @psalm-var list<Comparator>
*/
private array $customComparators = [];
/**
* @psalm-var list<Comparator>
*/
private array $defaultComparators = [];
public static function getInstance() : self {
if (self::$instance === null) {
self::$instance = new self();
// @codeCoverageIgnore
}
return self::$instance;
}
public function __construct() {
$this->registerDefaultComparators();
}
public function getComparatorFor(mixed $expected, mixed $actual) : Comparator {
foreach ($this->customComparators as $comparator) {
if ($comparator->accepts($expected, $actual)) {
return $comparator;
}
}
foreach ($this->defaultComparators as $comparator) {
if ($comparator->accepts($expected, $actual)) {
return $comparator;
}
}
throw new RuntimeException('No suitable Comparator implementation found');
}
/**
* Registers a new comparator.
*
* This comparator will be returned by getComparatorFor() if its accept() method
* returns TRUE for the compared values. It has higher priority than the
* existing comparators, meaning that its accept() method will be invoked
* before those of the other comparators.
*/
public function register(Comparator $comparator) : void {
array_unshift($this->customComparators, $comparator);
$comparator->setFactory($this);
}
/**
* Unregisters a comparator.
*
* This comparator will no longer be considered by getComparatorFor().
*/
public function unregister(Comparator $comparator) : void {
foreach ($this->customComparators as $key => $_comparator) {
if ($comparator === $_comparator) {
unset($this->customComparators[$key]);
}
}
}
public function reset() : void {
$this->customComparators = [];
}
private function registerDefaultComparators() : void {
$this->registerDefaultComparator(new MockObjectComparator());
$this->registerDefaultComparator(new DateTimeComparator());
$this->registerDefaultComparator(new DOMNodeComparator());
$this->registerDefaultComparator(new SplObjectStorageComparator());
$this->registerDefaultComparator(new ExceptionComparator());
$this->registerDefaultComparator(new ObjectComparator());
$this->registerDefaultComparator(new ResourceComparator());
$this->registerDefaultComparator(new ArrayComparator());
$this->registerDefaultComparator(new NumericComparator());
$this->registerDefaultComparator(new ScalarComparator());
$this->registerDefaultComparator(new TypeComparator());
}
private function registerDefaultComparator(Comparator $comparator) : void {
$this->defaultComparators[] = $comparator;
$comparator->setFactory($this);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overrides |
---|---|---|---|---|
Factory::$customComparators | private | property | @psalm-var list<Comparator> | |
Factory::$defaultComparators | private | property | @psalm-var list<Comparator> | |
Factory::$instance | private static | property | 1 | |
Factory::getComparatorFor | public | function | ||
Factory::getInstance | public static | function | 1 | |
Factory::register | public | function | Registers a new comparator. | |
Factory::registerDefaultComparator | private | function | ||
Factory::registerDefaultComparators | private | function | ||
Factory::reset | public | function | ||
Factory::unregister | public | function | Unregisters a comparator. | |
Factory::__construct | public | function | 1 |