/** * Überprüft ob der vom CodeExporter exportierte PHP Code ausgeführt dasselbe ergebnis wieder type hat * * dies gewährleistet, dass der type so wie er instanziiert, dann exportiert und dann wieder ausgeführt wird derselbe ist wie die Instanz */ protected function assertCodeExportEquals(WebforgeType $type) { $ce = new CodeExporter(new \Webforge\Common\CodeWriter()); $phpCode = '$actualType = ' . $ce->exportType($type) . ';'; eval($phpCode); if (!isset($actualType)) { $this->fail('Evald Code verursachte einen Fehler: ' . $phpCode); } $this->assertEquals($type, $actualType, 'PHPCode ist: ' . $phpCode); }
/** * Erstellt eine Funktion die für das Entity eine SetMeta mit allen Properties zurückgibt * * @chainable */ public function buildSetMetaGetter(CodeExporter $codeExporter = NULL) { if (!isset($codeExporter)) { $codeExporter = new CodeExporter(new CodeWriter()); } $code = array(); $code[] = 'return new \\Psc\\Data\\SetMeta(array('; foreach ($this->getProperties() as $property) { if ($property->getWasElevated()) { continue; } if (!$this->isMetaProperty($property)) { continue; } if ($property->getType() === NULL) { throw new EntityBuilderException('Property ' . $property->getName() . ' hat keinen Typ!'); } $code[] = sprintf(" '%s' => %s,", $property->getName(), $codeExporter->exportType($property->getType())); } $code[] = '));'; $this->createMethod('getSetMeta', array(), $code, GMethod::MODIFIER_STATIC | GMethod::MODIFIER_PUBLIC); return $this; }