class Prophet
Prophet creates prophecies.
@author Konstantin Kudryashov <ever.zet@gmail.com>
Hierarchy
- class \Prophecy\Prophet
Expanded class hierarchy of Prophet
2 files declare their use of Prophet
- MethodProphecy.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Prophecy/ MethodProphecy.php - ProphecyTrait.php in vendor/
phpspec/ prophecy-phpunit/ src/ ProphecyTrait.php
File
-
vendor/
phpspec/ prophecy/ src/ Prophecy/ Prophet.php, line 32
Namespace
ProphecyView source
class Prophet {
/**
* @var Doubler
*/
private $doubler;
private $revealer;
private $util;
/**
* @var list<ObjectProphecy<object>>
*/
private $prophecies = array();
public function __construct(?Doubler $doubler = null, ?RevealerInterface $revealer = null, ?StringUtil $util = null) {
if (null === $doubler) {
$doubler = new CachedDoubler();
$doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch());
$doubler->registerClassPatch(new ClassPatch\TraversablePatch());
$doubler->registerClassPatch(new ClassPatch\ThrowablePatch());
$doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch());
$doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch());
$doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch());
$doubler->registerClassPatch(new ClassPatch\MagicCallPatch());
$doubler->registerClassPatch(new ClassPatch\KeywordPatch());
}
$this->doubler = $doubler;
$this->revealer = $revealer ?: new Revealer();
$this->util = $util ?: new StringUtil();
}
/**
* Creates new object prophecy.
*
* @param null|string $classOrInterface Class or interface name
*
* @return ObjectProphecy
*
* @template T of object
* @phpstan-param class-string<T>|null $classOrInterface
* @phpstan-return ($classOrInterface is null ? ObjectProphecy<object> : ObjectProphecy<T>)
*/
public function prophesize($classOrInterface = null) {
$this->prophecies[] = $prophecy = new ObjectProphecy(new LazyDouble($this->doubler), new CallCenter($this->util), $this->revealer);
if ($classOrInterface) {
if (class_exists($classOrInterface)) {
return $prophecy->willExtend($classOrInterface);
}
if (interface_exists($classOrInterface)) {
return $prophecy->willImplement($classOrInterface);
}
throw new ClassNotFoundException(sprintf('Cannot prophesize class %s, because it cannot be found.', $classOrInterface), $classOrInterface);
}
return $prophecy;
}
/**
* Returns all created object prophecies.
*
* @return list<ObjectProphecy<object>>
*/
public function getProphecies() {
return $this->prophecies;
}
/**
* Returns Doubler instance assigned to this Prophet.
*
* @return Doubler
*/
public function getDoubler() {
return $this->doubler;
}
/**
* Checks all predictions defined by prophecies of this Prophet.
*
* @return void
*
* @throws Exception\Prediction\AggregateException If any prediction fails
*/
public function checkPredictions() {
$exception = new AggregateException("Some predictions failed:\n");
foreach ($this->prophecies as $prophecy) {
try {
$prophecy->checkProphecyMethodsPredictions();
} catch (PredictionException $e) {
$exception->append($e);
}
}
if (count($exception->getExceptions())) {
throw $exception;
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Prophet::$doubler | private | property | |
Prophet::$prophecies | private | property | |
Prophet::$revealer | private | property | |
Prophet::$util | private | property | |
Prophet::checkPredictions | public | function | Checks all predictions defined by prophecies of this Prophet. |
Prophet::getDoubler | public | function | Returns Doubler instance assigned to this Prophet. |
Prophet::getProphecies | public | function | Returns all created object prophecies. |
Prophet::prophesize | public | function | Creates new object prophecy. |
Prophet::__construct | public | function |