/** * * * wird die Datei nicht übergeben, wird diese in den EntitiesPath des Modules geschrieben ($this->getGClass()->getClassName().php) * auch wenn $this->withRepository gesetzt ist, schreibt dies nur das Entity (wegen overwrite) * * @return File */ public function write(File $file = NULL, $overwrite = NULL) { $this->classWriter->setClass($this->class); $this->classWriter->addImport(new GClass('Psc\\Data\\ArrayCollection')); $this->classWriter->setUseStyle('lines'); $this->classWriter->addImport(new GClass('Doctrine\\ORM\\Mapping'), 'ORM'); if (!isset($file)) { $file = $this->inferFile($this->class); } $this->classWriter->write($file, array(), $overwrite); $this->classWriter->syntaxCheck($file); $this->writtenFile = $file; return $file; }
public function createClassMetadata(GClass $gClass) { // da wir gClass mehrmals im Test evalen könnten, erzeugen wir einen unique hash für den classname und übergeben den // der class metadata $className = uniqid($gClass->getClassName()); $gClass->setClassName($className); $gClass->createDocBlock()->addAnnotation(Annotation::createDC('Entity')); $classWriter = new ClassWriter($gClass); $classWriter->setUseStyle('lines'); $classWriter->addImport(new GClass('Doctrine\\ORM\\Mapping'), 'ORM'); // braucht einen AnnotationReader nicht SimpleAnnotationReader $classWriter->write($file = $this->newFile('entity.' . $gClass->getClassName() . '.php')); require $file; $cm = new ClassMetadata($gClass->getFQN()); $cm->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService()); $this->annotationDriver->loadMetadataForClass($gClass->getFQN(), $cm); $file->delete(); return $cm; }
/** * @expectedException Psc\Code\Generate\Exception */ public function testUseImplicitDoubleAlias() { $writer = new ClassWriter(); $writer->setClass(new GClass('TestClass')); $writer->addImport(new GClass('Webforge\\Common\\System\\File')); $writer->addImport(new GClass('Webforge\\Common\\ArrayUtilnother\\File')); }