'', 'amount' => 0, 'billing' => "", 'billing_at' => "", 'billing_month' => 0, 'pay' => "", 'status' => STATUS['AVAILABLE'], 'content' => '' ]; public function __construct(array|null $data = null) { parent::__construct($data); } final public function getUserUid(): int|null { return $this->attributes['user_uid'] ?? null; } final public function getClientInfoUid(): int|null { return $this->attributes['clientinfo_uid'] ?? null; } final public function getServiceInfoUid(): int|null { return $this->attributes['serviceinfo_uid'] ?? null; } //기본기능 public function getCustomTitle(): string { return sprintf("%s %s [%s]", $this->getTitle(), $this->getAmount(), $this->getBillingAt()); } public function getBilling(): string { return $this->attributes['billing'] ?? ""; } public function getAmount(): int { return $this->attributes['amount'] ?? 0; } public function getBillingAt(): string { return $this->attributes['billing_at'] ?? ""; } public function getBillingMonth(): int { return $this->attributes['billing_month'] ?? 0; } public function getPay(): string { return $this->attributes['pay'] ?? ""; } public function getContent(): string { return $this->attributes['content'] ?? ""; } public function getCountDueAt(): string { $result = ""; if ($this->getStatus() === STATUS['UNPAID']) { $now = new DateTime(); // 오늘 날짜 $due = new DateTime($this->getBillingAt()); if ($due < $now) { $interval = $due->diff($now); $result = "{$interval->days}일지남"; } else if ($due > $now) { $interval = $now->diff($due); $day = $interval->days + 1; $result = "{$day}일전"; } else { $result = "당일"; } } return $result; } }