class ClassCreator
Class creator. Creates specific class in current environment.
@author Konstantin Kudryashov <ever.zet@gmail.com>
Hierarchy
- class \Prophecy\Doubler\Generator\ClassCreator
Expanded class hierarchy of ClassCreator
1 file declares its use of ClassCreator
- Doubler.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ Doubler.php
File
-
vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ Generator/ ClassCreator.php, line 22
Namespace
Prophecy\Doubler\GeneratorView source
class ClassCreator {
private $generator;
public function __construct(?ClassCodeGenerator $generator = null) {
$this->generator = $generator ?: new ClassCodeGenerator();
}
/**
* Creates class.
*
* @param string $classname
* @param Node\ClassNode $class
*
* @return mixed
*
* @throws \Prophecy\Exception\Doubler\ClassCreatorException
*/
public function create($classname, Node\ClassNode $class) {
$code = $this->generator
->generate($classname, $class);
$return = eval($code);
if (!class_exists($classname, false)) {
if (count($class->getInterfaces())) {
throw new ClassCreatorException(sprintf('Could not double `%s` and implement interfaces: [%s].', $class->getParentClass(), implode(', ', $class->getInterfaces())), $class);
}
throw new ClassCreatorException(sprintf('Could not double `%s`.', $class->getParentClass()), $class);
}
return $return;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
ClassCreator::$generator | private | property | |
ClassCreator::create | public | function | Creates class. |
ClassCreator::__construct | public | function |