/** * @Route("/testclass", name="homepage") * * @Method("GET") */ public function indexAction() { $class = new BaseClass('Classes', 'BestClass'); $class->addProperty(new ClassProperty('test', 'string')); $method = new ClassMethod('setTest'); $method->addParameter(new MethodParameter('test', 'string')); $method->setReturnType(null); $class->addMethod($method); $classGenerator = new ClassGenerator($class); $classWriter = new ClassWriter($classGenerator, new Filesystem(), '/Users/justingriffith/Sites/CodeCreator/'); $classWriter->write(); return $this->render('default/index.html.twig'); }
/** * Writes the class to a file. */ public function write() { try { $dir = $this->path->isDir() ? $this->path->getPathname() : $this->path->getPath(); $path = $dir . '/' . $this->baseClass->getClassName() . $this->baseClass->getExtension(); if (!file_exists($dir)) { $this->fileSystem->mkdir($dir, 0777, true); } //if (!file_exists($path)) { file_put_contents($path, $this->baseClass->generate()); //} } catch (IOExceptionInterface $e) { } }
/** * @covers ::generate */ public function testGenerate() { $class = $this->baseClass->generate(); $expectedClass = '<?php namespace App\\Classes\\; /** * Class BaseClass * * @package App\\Classes\\ */ class BaseClass { } '; $this->assertEquals($class, $expectedClass); $this->assertRegexp('/namespace/', $class); $this->assertRegexp('/\\* Class BaseClass/', $class); }
protected function generateImplementMethods() { $output = ''; foreach ($this->baseClass->getImplements() as $implement) { $reflection = new \ReflectionClass($implement); foreach ($reflection->getMethods() as $method) { $implementor = new ClassMethod($method->name, $method); $implementor->setDescription('Implementation of ' . $method->getName() . ' interface method'); $implementor->setBody(' // TODO: Code implementation'); $output .= PHP_EOL . $implementor->generate() . PHP_EOL; } } return $output; }
/** * @param stdClass $class * @param string $name * * @return BaseClass */ public function translateToBaseClass(stdClass $class, $name = '') { $baseClass = new BaseClass($this->yaml['namespace'], $name); $baseClass->setProperties($this->translatePropertiesToClassProperty($class->properties)); $baseClass->setMethods($this->translateMethodsToClassMethod($class->methods)); if (isset($class->namespace)) { $baseClass->setNameSpace($class->namespace); } if (isset($class->extends)) { $baseClass->setExtends($class->extends); } if (isset($class->implements)) { $baseClass->setImplements($class->implements); } if (isset($class->useStatements)) { foreach ($class->useStatements as $useStatement) { $baseClass->addUseStatement(new UseStatement($useStatement)); } } return $baseClass; }