Zephir\CompilerFileAnonymous::compileClass PHP Method

compileClass() public method

Compiles the class/interface contained in the file
public compileClass ( ClassDefinition $classDefinition, zephir\CompilationContext $compilationContext )
$classDefinition ClassDefinition
$compilationContext zephir\CompilationContext
    public function compileClass(ClassDefinition $classDefinition, CompilationContext $compilationContext)
    {
        $classDefinition = $this->classDefinition;
        /**
         * Do the compilation
         */
        $classDefinition->compile($compilationContext);
        $separators = str_repeat('../', count(explode('\\', $classDefinition->getCompleteName())) - 1);
        $code = '' . PHP_EOL;
        $code .= '#ifdef HAVE_CONFIG_H' . PHP_EOL;
        $code .= '#include "' . $separators . 'ext_config.h"' . PHP_EOL;
        $code .= '#endif' . PHP_EOL;
        $code .= '' . PHP_EOL;
        $code .= '#include <php.h>' . PHP_EOL;
        $code .= '#include "' . $separators . 'php_ext.h"' . PHP_EOL;
        $code .= '#include "' . $separators . 'ext.h"' . PHP_EOL;
        $code .= '' . PHP_EOL;
        $code .= '#include <Zend/zend_operators.h>' . PHP_EOL;
        $code .= '#include <Zend/zend_exceptions.h>' . PHP_EOL;
        $code .= '#include <Zend/zend_interfaces.h>' . PHP_EOL;
        $code .= '' . PHP_EOL;
        $code .= '#include "kernel/main.h"' . PHP_EOL;
        if ($classDefinition->getType() == 'class') {
            foreach ($compilationContext->headersManager->get() as $header => $one) {
                $code .= '#include "' . $header . '.h"' . PHP_EOL;
            }
        }
        if (count($this->headerCBlocks) > 0) {
            $code .= implode($this->headerCBlocks, PHP_EOL) . PHP_EOL;
        }
        /**
         * Prepend the required files to the header
         */
        $compilationContext->codePrinter->preOutput($code);
    }