Phpro\SoapClient\CodeGenerator\Assembler\ClassMapAssembler::assemble PHP Method

assemble() public method

public assemble ( Phpro\SoapClient\CodeGenerator\Context\ContextInterface $context )
$context Phpro\SoapClient\CodeGenerator\Context\ContextInterface
    public function assemble(ContextInterface $context)
    {
        $file = $context->getFile();
        $typeMap = $context->getTypeMap();
        try {
            $file->setUse(ClassMapCollection::class);
            $file->setUse(ClassMap::class);
            $linefeed = $file::LINE_FEED;
            $classMap = $this->assembleClassMap($typeMap, $linefeed, $file->getIndentation());
            $code = $this->assembleClassMapCollection($classMap, $linefeed) . $linefeed;
            $file->setBody($code);
        } catch (\Exception $e) {
            throw AssemblerException::fromException($e);
        }
    }

Usage Example

    /**
     * @test
     */
    function it_assembles_a_classmap()
    {
        $assembler = new ClassMapAssembler();
        $context = $this->createContext();
        $assembler->assemble($context);
        $code = $context->getFile()->generate();
        $expected = <<<CODE
<?php

use Phpro\\SoapClient\\Soap\\ClassMap\\ClassMapCollection;
use Phpro\\SoapClient\\Soap\\ClassMap\\ClassMap;

new ClassMapCollection([
    new ClassMap('MyType', \\MyNamespace\\MyType::class),
]);

CODE;
        $this->assertEquals($expected, $code);
    }