Exemplo n.º 1
0
 /**
  * @param Type $other
  * @return boolean
  */
 public function sameAs(Type $other)
 {
     $calledClass = get_called_class();
     if (!$other instanceof $calledClass) {
         return false;
     }
     $myProperties = $this->properties();
     $otherProperties = $other->properties();
     if ($this->description()->hasIdentifier()) {
         return $myProperties[$this->description()->identifierName()]->type()->sameAs($otherProperties[$this->description()->identifierName()]->type());
     }
     $equalsBuilder = EqualsBuilder::create();
     foreach ($this->properties() as $propertyName => $property) {
         $equalsBuilder->append($property->type()->sameAs($otherProperties[$propertyName]->type()));
     }
     return $equalsBuilder->equals();
 }
 /**
  * @param string $filename
  * @param Type $type
  * @param array $metadata
  * @return void
  */
 public function writeDataOfType($filename, Type $type, array &$metadata = [])
 {
     $writeHeader = !file_exists($filename);
     $writer = Writer::createFromPath($filename, 'a');
     if (array_key_exists('delimiter', $metadata)) {
         $writer->setDelimiter($metadata['delimiter']);
     }
     if (array_key_exists('enclosure', $metadata)) {
         $writer->setEnclosure($metadata['enclosure']);
     }
     if (array_key_exists('escape', $metadata)) {
         $writer->setEscape($metadata['escape']);
     }
     if (array_key_exists('newline', $metadata)) {
         $writer->setNewline($metadata['newline']);
     }
     if ($type->description()->nativeType() === NativeType::COLLECTION) {
         foreach ($type as $item) {
             if ($writeHeader) {
                 if ($item->description()->nativeType() === NativeType::DICTIONARY) {
                     $writer->insertOne(array_keys($item->properties()));
                 }
                 $writeHeader = false;
             }
             $writer->insertOne($this->convertToCsvRow($item));
         }
     } else {
         if ($writeHeader) {
             if ($type->description()->nativeType() === NativeType::DICTIONARY) {
                 $rows[] = array_keys($type->properties());
             }
         }
         $writer->insertOne($this->convertToCsvRow($type));
     }
 }