Library/Stubs/Generator.php
protected function buildClass(ClassDefinition $class, $indent)
    {
        $source = <<<EOF
<?php

namespace {$class->getNamespace()};


EOF;

        $source .= (new DocBlock($class->getDocBlock(), ''))."\n";

        if ($class->isFinal()) {
            $source .= 'final ';
        } elseif ($class->isAbstract()) {
            $source .= 'abstract ';
        }

        $source .= $class->getType().' '.$class->getName();

        if ($class->getExtendsClass()) {
            $extendsClassDefinition = $class->getExtendsClassDefinition();
            if (!$extendsClassDefinition) {
                throw new \RuntimeException('Class "'.$class->getName().'" does not have a extendsClassDefinition');
            }

            $source .= ' extends '.($extendsClassDefinition->isBundled() ? '' : '\\').trim($extendsClassDefinition->getCompleteName(), '\\');
        }

        if ($implementedInterfaces = $class->getImplementedInterfaces()) {
            $interfaces = array_map(function ($val) {
                return '\\'.trim($val, '\\');
            }, $implementedInterfaces);

            $keyword = 'interface' == $class->getType() ? ' extends ' : ' implements ';
            $source .= $keyword.implode(', ', $interfaces);
        }

        $source .= PHP_EOL.'{'.PHP_EOL;

        foreach ($class->getConstants() as $constant) {
            $source .= $this->buildConstant($constant, $indent).PHP_EOL.PHP_EOL;
        }

        foreach ($class->getProperties() as $property) {
            $source .= $this->buildProperty($property, $indent).PHP_EOL.PHP_EOL;
        }

        $source .= PHP_EOL;

        foreach ($class->getMethods() as $method) {
            if ($method->isInternal()) {
                continue;
            }

            $source .= $this->buildMethod($method, 'interface' === $class->getType(), $indent)."\n\n";
        }

        return $source.'}'.PHP_EOL;
    }
protected function buildClass(ClassDefinition $class, $indent)
    {
        $source = <<<EOF
<?php

namespace {$class->getNamespace()};


EOF;

        $source .= (new DocBlock($class->getDocBlock(), ''))."\n";

        if ($class->isFinal()) {
            $source .= 'final ';
        } elseif ($class->isAbstract()) {
            $source .= 'abstract ';
        }

        $source .= $class->getType().' '.$class->getName();

        if ($class->getExtendsClass()) {
            $extendsClassDefinition = $class->getExtendsClassDefinition();
            if (!$extendsClassDefinition) {
                throw new \RuntimeException('Class "'.$class->getName().'" does not have a extendsClassDefinition');
            }

            $source .= ' extends '.($extendsClassDefinition->isBundled() ? '' : '\\').trim($extendsClassDefinition->getCompleteName(), '\\');
        }

        if ($implementedInterfaces = $class->getImplementedInterfaces()) {
            $interfaces = array_map(function ($val) {
                return '\\'.trim($val, '\\');
            }, $implementedInterfaces);

            $keyword = 'interface' == $class->getType() ? ' extends ' : ' implements ';
            $source .= $keyword.implode(', ', $interfaces);
        }

        $source .= PHP_EOL.'{'.PHP_EOL;

        foreach ($class->getConstants() as $constant) {
            $source .= $this->buildConstant($constant, $indent).PHP_EOL.PHP_EOL;
        }

        foreach ($class->getProperties() as $property) {
            $source .= $this->buildProperty($property, $indent).PHP_EOL.PHP_EOL;
        }

        $source .= PHP_EOL;

        foreach ($class->getMethods() as $method) {
            if ($method->isInternal()) {
                continue;
            }

            $source .= $this->buildMethod($method, 'interface' === $class->getType(), $indent)."\n\n";
        }

        return $source.'}'.PHP_EOL;
    }
protected function buildClass ( ClassDefinition $ class , $ indent ) { $ source =  <<<EOF
<?php

namespace {$class->getNamespace()};


EOF ; $ source .= ( new DocBlock ( $ class -> getDocBlock ( ) , '' ) ) . "\n" ; if ( $ class -> isFinal ( ) ) { $ source .= 'final ' ; } elseif ( $ class -> isAbstract ( ) ) { $ source .= 'abstract ' ; } $ source .= $ class -> getType ( ) . ' ' . $ class -> getName ( ) ; if ( $ class -> getExtendsClass ( ) ) { $ extendsClassDefinition = $ class -> getExtendsClassDefinition ( ) ; if ( ! $ extendsClassDefinition ) { throw new \ RuntimeException ( 'Class "' . $ class -> getName ( ) . '" does not have a extendsClassDefinition' ) ; } $ source .= ' extends ' . ( $ extendsClassDefinition -> isBundled ( ) ? '' : '\\' ) . trim ( $ extendsClassDefinition -> getCompleteName ( ) , '\\' ) ; } if ( $ implementedInterfaces = $ class -> getImplementedInterfaces ( ) ) { $ interfaces = array_map ( function ( $ val ) { return '\\' . trim ( $ val , '\\' ) ; } , $ implementedInterfaces ) ; $ keyword = 'interface' == $ class -> getType ( ) ? ' extends ' : ' implements ' ; $ source .= $ keyword . implode ( ', ' , $ interfaces ) ; } $ source .= PHP_EOL . '{' . PHP_EOL ; foreach ( $ class -> getConstants ( ) as $ constant ) { $ source .= $ this -> buildConstant ( $ constant , $ indent ) . PHP_EOL . PHP_EOL ; } foreach ( $ class -> getProperties ( ) as $ property ) { $ source .= $ this -> buildProperty ( $ property , $ indent ) . PHP_EOL . PHP_EOL ; } $ source .= PHP_EOL ; foreach ( $ class -> getMethods ( ) as $ method ) { if ( $ method -> isInternal ( ) ) { continue ; } $ source .= $ this -> buildMethod ( $ method , 'interface' === $ class -> getType ( ) , $ indent ) . "\n\n" ; } return $ source . '}' . PHP_EOL ; }
Build class.

@param ClassDefinition $class
@param string          $indent

@return string
Build class .