/** * @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)); } }