protected function setPropertyType(DoctrineClassMetadata $doctrineMetadata, PropertyMetadata $propertyMetadata)
 {
     $propertyName = $propertyMetadata->name;
     if ($doctrineMetadata->hasField($propertyName) && ($fieldType = $this->normalizeFieldType($doctrineMetadata->getTypeOfField($propertyName)))) {
         $propertyMetadata->setType($fieldType);
     } elseif ($doctrineMetadata->hasAssociation($propertyName)) {
         $targetEntity = $doctrineMetadata->getAssociationTargetClass($propertyName);
         if (null === ($targetMetadata = $this->tryLoadingDoctrineMetadata($targetEntity))) {
             return;
         }
         // For inheritance schemes, we cannot add any type as we would only add the super-type of the hierarchy.
         // On serialization, this would lead to only the supertype being serialized, and properties of subtypes
         // being ignored.
         if ($targetMetadata instanceof DoctrineClassMetadata && !$targetMetadata->isInheritanceTypeNone()) {
             return;
         }
         if (!$doctrineMetadata->isSingleValuedAssociation($propertyName)) {
             $targetEntity = "ArrayCollection<{$targetEntity}>";
         }
         $propertyMetadata->setType($targetEntity);
     }
 }
 protected function setPropertyType(DoctrineClassMetadata $doctrineMetadata, PropertyMetadata $propertyMetadata)
 {
     $propertyName = $propertyMetadata->name;
     if ($doctrineMetadata->hasField($propertyName) && ($fieldType = $this->normalizeFieldType($doctrineMetadata->getTypeOfField($propertyName)))) {
         $field = $doctrineMetadata->getField($propertyName);
         if (!empty($field['multivalue'])) {
             $fieldType = 'array';
         }
         $propertyMetadata->setType($fieldType);
     } elseif ($doctrineMetadata->hasAssociation($propertyName)) {
         try {
             $targetEntity = $doctrineMetadata->getAssociationTargetClass($propertyName);
         } catch (\Exception $e) {
             return;
         }
         if (null === $this->tryLoadingDoctrineMetadata($targetEntity)) {
             return;
         }
         if (!$doctrineMetadata->isSingleValuedAssociation($propertyName)) {
             $targetEntity = "ArrayCollection<{$targetEntity}>";
         }
         $propertyMetadata->setType($targetEntity);
     }
 }
 /**
  * Assigns the data type for a property.
  *
  * @param PropertyMetadata $propertyMetadata
  * @param string $type
  * @throws Exception\UnsupportedType
  */
 protected function setTypeMetadata(PropertyMetadata $propertyMetadata, $type)
 {
     $propertyMetadata->setType($type);
 }
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\BlogPost', 'id');
$pMetadata->setType('string');
$pMetadata->groups = array('comments', 'post');
$pMetadata->xmlElementCData = false;
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\BlogPost', 'title');
$pMetadata->setType('string');
$pMetadata->groups = array('comments', 'post');
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\BlogPost', 'createdAt');
$pMetadata->setType('DateTime');
$pMetadata->xmlAttribute = true;
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\BlogPost', 'published');
$pMetadata->setType('boolean');
$pMetadata->serializedName = 'is_published';
$pMetadata->groups = array('post');
$pMetadata->xmlAttribute = true;
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\BlogPost', 'comments');
$pMetadata->setType('ArrayCollection<JMS\\Serializer\\Tests\\Fixtures\\Comment>');
$pMetadata->xmlCollection = true;
$pMetadata->xmlCollectionInline = true;
$pMetadata->xmlEntryName = 'comment';
$pMetadata->groups = array('comments');
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\BlogPost', 'author');
$pMetadata->setType('JMS\\Serializer\\Tests\\Fixtures\\Author');
$pMetadata->groups = array('post');
$metadata->addPropertyMetadata($pMetadata);
return $metadata;
use JMS\Serializer\Metadata\ClassMetadata;
use JMS\Serializer\Metadata\PropertyMetadata;
$metadata = new ClassMetadata('JMS\\Serializer\\Tests\\Fixtures\\ObjectWithXmlNamespaces');
$metadata->xmlRootName = 'test-object';
$metadata->xmlRootNamespace = 'http://example.com/namespace';
$metadata->registerNamespace('http://example.com/namespace');
$metadata->registerNamespace('http://schemas.google.com/g/2005', 'gd');
$metadata->registerNamespace('http://www.w3.org/2005/Atom', 'atom');
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\ObjectWithXmlNamespaces', 'title');
$pMetadata->setType('string');
$pMetadata->xmlNamespace = "http://purl.org/dc/elements/1.1/";
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\ObjectWithXmlNamespaces', 'createdAt');
$pMetadata->setType('DateTime');
$pMetadata->xmlAttribute = true;
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\ObjectWithXmlNamespaces', 'etag');
$pMetadata->setType('string');
$pMetadata->xmlAttribute = true;
$pMetadata->xmlNamespace = 'http://schemas.google.com/g/2005';
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\ObjectWithXmlNamespaces', 'author');
$pMetadata->setType('string');
$pMetadata->xmlNamespace = 'http://www.w3.org/2005/Atom';
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\ObjectWithXmlNamespaces', 'language');
$pMetadata->setType('string');
$pMetadata->xmlAttribute = true;
$pMetadata->xmlNamespace = 'http://purl.org/dc/elements/1.1/';
$metadata->addPropertyMetadata($pMetadata);
return $metadata;
Exemple #6
0
<?php

use JMS\Serializer\Metadata\ClassMetadata;
use JMS\Serializer\Metadata\PropertyMetadata;
$metadata = new ClassMetadata('JMS\\Serializer\\Tests\\Fixtures\\Person');
$metadata->xmlRootName = 'child';
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\Person', 'name');
$pMetadata->setType('string');
$pMetadata->xmlValue = true;
$pMetadata->xmlElementCData = false;
$metadata->addPropertyMetadata($pMetadata);
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\Person', 'age');
$pMetadata->setType('integer');
$pMetadata->xmlAttribute = true;
$metadata->addPropertyMetadata($pMetadata);
return $metadata;
<?php

use JMS\Serializer\Metadata\ClassMetadata;
use JMS\Serializer\Metadata\PropertyMetadata;
$metadata = new ClassMetadata('JMS\\Serializer\\Tests\\Fixtures\\Discriminator\\Vehicle');
$metadata->setDiscriminator('type', array('car' => 'JMS\\Serializer\\Tests\\Fixtures\\Discriminator\\Car', 'moped' => 'JMS\\Serializer\\Tests\\Fixtures\\Discriminator\\Moped'));
$km = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\Discriminator\\Vehicle', 'km');
$km->setType('integer');
$metadata->addPropertyMetadata($km);
return $metadata;
<?php

use JMS\Serializer\Metadata\ClassMetadata;
use JMS\Serializer\Metadata\PropertyMetadata;
$metadata = new ClassMetadata('JMS\\Serializer\\Tests\\Fixtures\\Price');
$pMetadata = new PropertyMetadata('JMS\\Serializer\\Tests\\Fixtures\\Price', 'price');
$pMetadata->setType('double');
$pMetadata->xmlValue = true;
$metadata->addPropertyMetadata($pMetadata);
return $metadata;