Example #1
0
 /**
  * Writes all data of the defined Value to the XmlWriter.
  *
  * You can write it in 3 different ways:
  *
  * - <$name type="..." value="..." />
  *   Is created if $short is boolean TRUE.
  *
  * If $short is FALSE you can write in the following 2 ways:
  *
  * - <$name type="...">$value</$name>
  *   Is created if $separateElements is boolean FALSE.
  * - <$name><Type>...</Type><Value>$value</Value></$name>
  *   Is created if $separateElements is boolean TRUE.
  *
  * @param \XMLWriter $w                The XmlWriter to use.
  * @param mixed      $value            The value to write.
  * @param string     $name             The name of the element to write
  * @param boolean    $short            Use the short notation? (type and value as attributes)
  * @param boolean    $separateElements Write type and value in separate elements, if $short is FALSE
  */
 public static function WriteTypedXmlValue(\XMLWriter $w, $value, string $name, bool $short = true, bool $separateElements = false)
 {
     if (!$value instanceof Type) {
         $value = new Type($value);
     }
     $v = null;
     $t = null;
     switch ($value->getType()) {
         case Type::PHP_ARRAY:
             $v = \serialize($value->getValue());
             $t = Type::PHP_ARRAY;
             break;
         case Type::PHP_BOOLEAN:
             $v = $value->getValue() ? 'true' : 'false';
             $t = Type::PHP_BOOLEAN;
             break;
         case Type::PHP_DOUBLE:
         case Type::PHP_FLOAT:
         case Type::PHP_INTEGER:
             $v = $value->getValue();
             $t = $value->getType();
             break;
         case Type::PHP_NULL:
             $v = '';
             $t = Type::PHP_NULL;
             break;
         case Type::PHP_RESOURCE:
             # Ignore some resources
             break;
         case Type::PHP_STRING:
             $v = $value->getValue();
             $t = Type::PHP_STRING;
             break;
         case Type::PHP_UNKNOWN:
             $v = $value->getStringValue();
             $t = Type::PHP_STRING;
             break;
         default:
             $v = \serialize($value->getValue());
             $t = $value->getType();
             break;
     }
     if (!\is_null($t) && !\is_null($v)) {
         $w->startElement($name);
         if ($short) {
             $w->writeAttribute('type', $t);
             $w->writeAttribute('value', $v);
         } else {
             if ($separateElements) {
                 $w->writeElement('type', $t);
                 $w->writeElement('value', $v);
             } else {
                 $w->writeAttribute('type', $t);
                 $w->text($v);
             }
         }
         $w->endElement();
     }
 }
Example #2
0
 /**
  * Obtain DBMS specific SQL code portion needed to declare a generic type
  * field to be used in statements like CREATE TABLE.
  *
  * @param string $name   name the field to be declared.
  * @param array  $field  associative array with the name of the properties
  *      of the field being declared as array indexes. Currently, the types
  *      of supported field properties are as follows:
  *
  *      length
  *          Integer value that determines the maximum length of the text
  *          field. If this argument is missing the field should be
  *          declared to have the longest length allowed by the DBMS.
  *
  *      default
  *          Text value to be used as default for this field.
  *
  *      notnull
  *          Boolean flag that indicates whether this field is constrained
  *          to not be set to null.
  *      charset
  *          Text value with the default CHARACTER SET for this field.
  *      collation
  *          Text value with the default COLLATION for this field.
  *      unique
  *          unique constraint
  *      check
  *          column check constraint
  *
  * @return string  DBMS specific SQL code portion that should be used to declare the column.
  */
 public function getColumnDeclarationSql($name, array $field)
 {
     $default = $this->getDefaultValueDeclarationSql($field);
     $charset = isset($field['charset']) && $field['charset'] ? ' ' . $this->getColumnCharsetDeclarationSql($field['charset']) : '';
     $collation = isset($field['collation']) && $field['collation'] ? ' ' . $this->getColumnCollationDeclarationSql($field['collation']) : '';
     $notnull = isset($field['notnull']) && $field['notnull'] ? ' NOT NULL' : '';
     $unique = isset($field['unique']) && $field['unique'] ? ' ' . $this->getUniqueFieldDeclarationSql() : '';
     $check = isset($field['check']) && $field['check'] ? ' ' . $field['check'] : '';
     $typeDecl = Type::getType($field['type'])->getSqlDeclaration($field, $this);
     return '`' . $name . '` ' . $typeDecl . $charset . $default . $notnull . $unique . $check . $collation;
 }
Example #3
0
 /**
  * @covers Geissler\Converter\Model\Type::getType
  * 
  */
 public function testGetType()
 {
     $this->assertInstanceOf($this->class, $this->object->setArticle());
     $this->assertEquals('article', $this->object->getType());
 }