public assemble ( Phpro\SoapClient\CodeGenerator\Context\ContextInterface $context ) | ||
$context | Phpro\SoapClient\CodeGenerator\Context\ContextInterface |
public function assemble(ContextInterface $context)
{
$class = $context->getClass();
$properties = $context->getType()->getProperties();
$firstProperty = count($properties) ? current($properties) : null;
try {
$interfaceAssembler = new InterfaceAssembler(ResultProviderInterface::class);
if ($interfaceAssembler->canAssemble($context)) {
$interfaceAssembler->assemble($context);
}
if ($firstProperty) {
$this->implementGetResult($context, $class, $firstProperty);
}
} catch (\Exception $e) {
throw AssemblerException::fromException($e);
}
}
/** * @test */ function it_assembles_a_type_with_wrapper_class_with_prefixed_slash() { $assembler = new ResultProviderAssembler('\\' . MixedResult::class); $context = $this->createContext(); $assembler->assemble($context); $code = $context->getClass()->generate(); $expected = <<<CODE namespace MyNamespace; use Phpro\\SoapClient\\Type\\ResultProviderInterface; use Phpro\\SoapClient\\Type\\MixedResult; class MyType implements ResultProviderInterface { /** * @return MixedResult */ public function getResult() { return new MixedResult(\$this->prop1); } } CODE; $this->assertEquals($expected, $code); }