public function getMockedClassCode($class, $mockNamespace = null, $mockClass = null)
{
if (trim($class, '\\') == '' || rtrim($class, '\\') != $class) {
throw new exceptions\runtime('Class name \'' . $class . '\' is invalid');
}
if ($mockNamespace === null) {
$mockNamespace = $this->getNamespace($class);
}
$class = '\\' . ltrim($class, '\\');
if ($mockClass === null) {
$mockClass = self::getClassName($class);
}
if ($this->adapter->class_exists($mockNamespace . '\\' . $mockClass, false) === true || $this->adapter->interface_exists($mockNamespace . '\\' . $mockClass, false) === true) {
throw new exceptions\logic('Class \'' . $mockNamespace . '\\' . $mockClass . '\' already exists');
}
if ($this->adapter->class_exists($class, true) === false && $this->adapter->interface_exists($class, true) === false) {
$code = self::generateUnknownClassCode($class, $mockNamespace, $mockClass);
} else {
$reflectionClass = call_user_func($this->reflectionClassFactory, $class);
if ($reflectionClass->isFinal() === true) {
throw new exceptions\logic('Class \'' . $class . '\' is final, unable to mock it');
}
$code = $reflectionClass->isInterface() === false ? $this->generateClassCode($reflectionClass, $mockNamespace, $mockClass) : $this->generateInterfaceCode($reflectionClass, $mockNamespace, $mockClass);
}
$this->shuntedMethods = $this->overloadedMethods = $this->orphanizedMethods = array();
$this->unshuntParentClassCalls();
return $code;
}