class Factory in Zircon Profile 8.0
Same name in this branch
- 8.0 vendor/sebastian/comparator/src/Factory.php \SebastianBergmann\Comparator\Factory
- 8.0 vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php \Prophecy\Comparator\Factory
Same name and namespace in other branches
- 8 vendor/sebastian/comparator/src/Factory.php \SebastianBergmann\Comparator\Factory
Factory for comparators which compare values for equality.
Hierarchy
- class \SebastianBergmann\Comparator\Factory
Expanded class hierarchy of Factory
1 file declares its use of Factory
- Factory.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Comparator/ Factory.php
File
- vendor/
sebastian/ comparator/ src/ Factory.php, line 16
Namespace
SebastianBergmann\ComparatorView source
class Factory {
/**
* @var Comparator[]
*/
private $comparators = array();
/**
* @var Factory
*/
private static $instance;
/**
* Constructs a new factory.
*/
public function __construct() {
$this
->register(new TypeComparator());
$this
->register(new ScalarComparator());
$this
->register(new NumericComparator());
$this
->register(new DoubleComparator());
$this
->register(new ArrayComparator());
$this
->register(new ResourceComparator());
$this
->register(new ObjectComparator());
$this
->register(new ExceptionComparator());
$this
->register(new SplObjectStorageComparator());
$this
->register(new DOMNodeComparator());
$this
->register(new MockObjectComparator());
$this
->register(new DateTimeComparator());
}
/**
* @return Factory
*/
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Returns the correct comparator for comparing two values.
*
* @param mixed $expected The first value to compare
* @param mixed $actual The second value to compare
* @return Comparator
*/
public function getComparatorFor($expected, $actual) {
foreach ($this->comparators as $comparator) {
if ($comparator
->accepts($expected, $actual)) {
return $comparator;
}
}
}
/**
* Registers a new comparator.
*
* This comparator will be returned by getInstance() 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 tested
* before those of the other comparators.
*
* @param Comparator $comparator The registered comparator
*/
public function register(Comparator $comparator) {
array_unshift($this->comparators, $comparator);
$comparator
->setFactory($this);
}
/**
* Unregisters a comparator.
*
* This comparator will no longer be returned by getInstance().
*
* @param Comparator $comparator The unregistered comparator
*/
public function unregister(Comparator $comparator) {
foreach ($this->comparators as $key => $_comparator) {
if ($comparator === $_comparator) {
unset($this->comparators[$key]);
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Factory:: |
private | property | ||
Factory:: |
private static | property | 1 | |
Factory:: |
public | function | Returns the correct comparator for comparing two values. | |
Factory:: |
public static | function | 1 | |
Factory:: |
public | function | Registers a new comparator. | |
Factory:: |
public | function | Unregisters a comparator. | |
Factory:: |
public | function | Constructs a new factory. | 1 |