From 207f785d7f4e425af0f165c35afd4fd8f06071c7 Mon Sep 17 00:00:00 2001 From: yggverse Date: Sun, 23 Jun 2024 19:22:56 +0300 Subject: [PATCH] create Entity namespace --- src/Entity/Code.php | 23 +++++++++ src/Entity/Line.php | 67 ++++++++++++++++++++++++ src/Entity/Link.php | 122 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+) create mode 100644 src/Entity/Code.php create mode 100644 src/Entity/Line.php create mode 100644 src/Entity/Link.php diff --git a/src/Entity/Code.php b/src/Entity/Code.php new file mode 100644 index 0000000..6a4dad1 --- /dev/null +++ b/src/Entity/Code.php @@ -0,0 +1,23 @@ +setData( + $data + ); + + $this->setEscaped( + $escaped + ); + + $this->setNumber( + $number + ); + } + + public function getData(): string + { + return $this->_data; + } + + public function setData( + string $data + ): void + { + $this->_data = $data; + } + + public function getEscaped(): bool + { + return $this->_escaped; + } + + public function setEscaped( + bool $escaped + ): void + { + $this->_escaped = $escaped; + } + + public function getNumber(): ?int + { + return $this->_number; + } + + public function setNumber( + ?int $number + ): void + { + $this->_number = $number; + } +} diff --git a/src/Entity/Link.php b/src/Entity/Link.php new file mode 100644 index 0000000..afe6453 --- /dev/null +++ b/src/Entity/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