You are here

public function ClassCreator::create in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php \Prophecy\Doubler\Generator\ClassCreator::create()

Creates class.

Parameters

string $classname:

Node\ClassNode $class:

Return value

mixed

Throws

\Prophecy\Exception\Doubler\ClassCreatorException

File

vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php, line 46

Class

ClassCreator
Class creator. Creates specific class in current environment.

Namespace

Prophecy\Doubler\Generator

Code

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;
}