Beispiel #1
0
 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);
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    protected function processEventsMapping()
    {
        if ($this->configClass['events']) {
            $events = Dumper::exportArray($this->configClass['events'], 12);
            $this->loadMetadataCode[$this->class][] = <<<EOF
        \$metadata->setLifecycleCallbacks({$events});
EOF;
        }
    }
Beispiel #5
0
 public function generate()
 {
     $definition = $this->create();
     $dumper = new Dumper($definition);
     return $dumper->dump();
 }