public function testDefinition() { $definition1 = new Definition('Class1'); $definition2 = new Definition('Class2'); $dumper = new Dumper($definition1); $dumper->setDefinition($definition2); $this->assertSame($definition2, $dumper->getDefinition()); }
/** * {@inheritdoc} */ protected function doClassProcess() { $validation = array('constraints' => array(), 'getters' => array()); // constraints if (isset($this->configClass['validation'])) { $validation['constraints'] = $this->configClass['validation']; } // getters // fields foreach ($this->configClass['fields'] as $name => $field) { if (empty($field['inherited']) && isset($field['validation']) && $field['validation']) { $validation['getters'][$name] = $field['validation']; } } // referencesOne foreach ($this->configClass['referencesOne'] as $name => $referenceOne) { if (empty($referenceOne['inherited']) && isset($referenceOne['validation']) && $referenceOne['validation']) { $validation['getters'][$name] = $referenceOne['validation']; } } // referencesMany foreach ($this->configClass['referencesMany'] as $name => $referenceMany) { if (empty($referenceMany['inherited']) && isset($referenceMany['validation']) && $referenceMany['validation']) { $validation['getters'][$name] = $referenceMany['validation']; } } // embeddedsOne foreach ($this->configClass['embeddedsOne'] as $name => $embeddedOne) { if (empty($embeddedOne['inherited']) && isset($embeddedOne['validation']) && $embeddedOne['validation']) { $validation['getters'][$name] = $embeddedOne['validation']; } } // embeddedsMany foreach ($this->configClass['embeddedsMany'] as $name => $embeddedMany) { if (empty($embeddedMany['inherited']) && isset($embeddedMany['validation']) && $embeddedMany['validation']) { $validation['getters'][$name] = $embeddedMany['validation']; } } $validation = Dumper::exportArray($validation, 12); $method = new Method('public', 'loadValidatorMetadata', '\\Symfony\\Component\\Validator\\Mapping\\ClassMetadata $metadata', <<<EOF \$validation = {$validation}; foreach (\\Mandango\\MandangoBundle\\Extension\\DocumentValidation::parseNodes(\$validation['constraints']) as \$constraint) { \$metadata->addConstraint(\$constraint); } foreach (\$validation['getters'] as \$getter => \$constraints) { foreach (\\Mandango\\MandangoBundle\\Extension\\DocumentValidation::parseNodes(\$constraints) as \$constraint) { \$metadata->addGetterConstraint(\$getter, \$constraint); } } return true; EOF ); $method->setStatic(true); $method->setDocComment(<<<EOF /** * Maps the validation. * * @param \\Symfony\\Component\\Validator\\Mapping\\ClassMetadata \$metadata The metadata class. */ EOF ); $this->definitions['document_base']->addMethod($method); }
private function globalMetadataProcess() { $output = new Output($this->getOption('metadata_factory_output'), true); $definition = new Definition($this->getOption('metadata_factory_class'), $output); $definition->setParentClass('\\Mongator\\MetadataFactory'); $this->definitions['metadata_factory'] = $definition; $output = new Output($this->getOption('metadata_factory_output'), true); $definition = new Definition($this->getOption('metadata_factory_class') . 'Info', $output); $this->definitions['metadata_factory_info'] = $definition; $classes = array(); foreach ($this->configClasses as $class => $configClass) { $classes[$class] = $configClass['isEmbedded']; $info = array(); // general $info['isEmbedded'] = $configClass['isEmbedded']; if (!$info['isEmbedded']) { $info['Mongator'] = $configClass['Mongator']; $info['connection'] = $configClass['connection']; $info['collection'] = $configClass['collection']; } // inheritable $info['inheritable'] = $configClass['inheritable']; // inheritance $info['inheritance'] = $configClass['inheritance']; // fields $info['fields'] = $configClass['fields']; // references $info['_has_references'] = $configClass['_has_references']; $info['referencesOne'] = $configClass['referencesOne']; $info['referencesMany'] = $configClass['referencesMany']; // embeddeds $info['embeddedsOne'] = $configClass['embeddedsOne']; $info['embeddedsMany'] = $configClass['embeddedsMany']; // relations if (!$info['isEmbedded']) { $info['relationsOne'] = $configClass['relationsOne']; $info['relationsManyOne'] = $configClass['relationsManyOne']; $info['relationsManyMany'] = $configClass['relationsManyMany']; $info['relationsManyThrough'] = $configClass['relationsManyThrough']; } // indexes $info['indexes'] = $configClass['indexes']; $info['_indexes'] = $configClass['_indexes']; // data cache $info['cache'] = $configClass['cache']; // behaviors $info['behaviors'] = $configClass['behaviors']; $info = \Mandango\Mondator\Dumper::exportArray($info, 12); $method = new Method('public', 'get' . str_replace('\\', '', $class) . 'Class', '', <<<EOF return {$info}; EOF ); $this->definitions['metadata_factory_info']->addMethod($method); } $property = new Property('protected', 'classes', $classes); $this->definitions['metadata_factory']->addProperty($property); }
protected function processEventsMapping() { if ($this->configClass['events']) { $events = Dumper::exportArray($this->configClass['events'], 12); $this->loadMetadataCode[$this->class][] = <<<EOF \$metadata->setLifecycleCallbacks({$events}); EOF; } }
public function generate() { $definition = $this->create(); $dumper = new Dumper($definition); return $dumper->dump(); }