示例#1
0
 public function testValue()
 {
     $property = new Property('protected', 'visibilities', array('public', 'protected'));
     $property->setValue('public;protected;private');
     $this->assertSame('public;protected;private', $property->getValue());
 }
示例#2
0
    protected function processColumnsMapping()
    {
        foreach ($this->configClass['columns'] as $name => &$column) {
            if (is_string($column)) {
                $column = array('type' => $column);
            } else {
                if (!is_array($column)) {
                    throw new \RuntimeException(sprintf('The column "%s" is not an string or array.', $name));
                }
                if (!isset($column['type'])) {
                    throw new \RuntimeException(sprintf('The column "%s" does not have type.', $name));
                }
            }
            /*
             * Mapping
             */
            // column
            $fieldMapping = array('fieldName' => $name);
            foreach (array('type', 'length', 'precision', 'scale', 'nullable', 'unique', 'options', 'columnDefinition') as $attribute) {
                if (isset($column[$attribute])) {
                    $fieldMapping[$attribute] = $column[$attribute];
                }
            }
            if (isset($column['name'])) {
                $fieldMapping['columnName'] = $column['name'];
            }
            // identifier
            if (isset($column['id'])) {
                // field
                $fieldMapping['id'] = true;
                // check
                if (is_string($column['id'])) {
                    $column['id'] = array('strategy' => $column['id']);
                } else {
                    if (!is_array($column['id'])) {
                        throw new \RuntimeException(sprintf('The identifier "%s" is not an array or an string.', $name));
                    }
                    if (!isset($column['id']['strategy'])) {
                        throw new \RuntimeException(sprintf('The identifier "%s" does not have strategy.', $name));
                    }
                }
                // strategy
                $strategyUpper = strtoupper($column['id']['strategy']);
                $this->loadMetadataCode[$this->class][] = <<<EOF
        \$metadata->setIdGeneratorType(\\Doctrine\\ORM\\Mapping\\ClassMetadata::GENERATOR_TYPE_{$strategyUpper});
EOF;
                // sequence
                if ('sequence' == $column['id']['strategy']) {
                    if (!isset($column['id']['sequence'])) {
                        $column['id']['sequence'] = array();
                    }
                    $sequenceMapping = array();
                    if (isset($column['id']['sequence']['name'])) {
                        $sequenceMapping['sequenceName'] = $column['id']['sequence']['name'];
                    }
                    if (isset($column['id']['sequence']['allocationSize'])) {
                        $sequenceMapping['sequenceName'] = $column['id']['sequence']['allocationSize'];
                    }
                    if (isset($column['id']['sequence']['initialValue'])) {
                        $sequenceMapping['sequenceName'] = $column['id']['sequence']['initialValue'];
                    }
                    $sequenceMapping = Dumper::exportArray($sequenceMapping, 12);
                    $this->loadMetadataCode[$this->class][] = <<<EOF
        \$metadata->setSequenceGeneratorDefinition({$sequenceMapping});
EOF;
                }
            }
            // map field
            $fieldMapping = Dumper::exportArray($fieldMapping, 12);
            $this->loadMetadataCode[$this->class][] = <<<EOF
        \$metadata->mapField({$fieldMapping});
EOF;
            /*
             * Property
             */
            $property = new Property('protected', $name, null);
            // default
            if (isset($column['default'])) {
                $property->setValue($column['default']);
            }
            $this->definitions['entity_base']->addProperty($property);
        }
    }