diff --git a/src/Link.php b/src/Link.php new file mode 100644 index 0000000..6410382 --- /dev/null +++ b/src/Link.php @@ -0,0 +1,122 @@ +setAddress( + $address + ); + + $this->setAlt( + $alt + ); + + $this->setDate( + $date + ); + } + + public function setAddress( + string $address + ): void + { + $address = trim( + $address + ); + + if (empty($address)) + { + throw new \Exception( + _('Address required') + ); + } + + $this->_address = $address; + } + + public function getAddress(): string + { + return $this->_address; + } + + public function setAlt( + ?string $alt + ): void + { + if ($alt) + { + $alt = trim( + $alt + ); + } + + $this->_alt = $alt; + } + + public function getAlt(): ?string + { + return $this->_alt; + } + + public function setDate( + ?string $date + ): void + { + if ($date) + { + $date = trim( + $date + ); + + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/')) + { + throw new \Exception( + _('Date does not match format YYYY-MM-DD') + ); + } + } + + $this->_date = $date; + } + + public function getDate(): ?string + { + return $this->_date; + } + + public function toString(): string + { + $parts = [ + '=>', + $this->getAddress() + ]; + + if ($date = $this->getDate()) + { + $parts[] = $date; + } + + if ($alt = $this->getAlt()) + { + $parts[] = $alt; + } + + return implode( + ' ', + $parts + ); + } +} \ No newline at end of file