class ClassCreator in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php \Prophecy\Doubler\Generator\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;
/**
* Initializes creator.
*
* @param ClassCodeGenerator $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
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ClassCreator:: |
private | property | ||
ClassCreator:: |
public | function | Creates class. | |
ClassCreator:: |
public | function | Initializes creator. |