'', 'amount' => 0, 'billing' => "", 'billing_at' => "", 'billing_month' => 0, 'pay' => "", 'status' => '', 'content' => '' ]; public function __construct(array|null $data = null) { parent::__construct($data); } final public function getUserUid(): int|null { return $this->user_uid ?? null; } final public function getClientInfoUid(): int|null { return $this->clientinfo_uid ?? null; } final public function getServiceInfoUid(): int|null { return $this->serviceinfo_uid ?? null; } //기본기능 public function getCustomTitle(): string { return sprintf("%s %s [%s]", $this->getTitle(), $this->getAmount(), $this->getBillingAt()); } public function getBilling(): string { return $this->billing ?? ""; } public function getAmount(): int { return $this->amount ?? 0; } public function getBillingAt(): string { return $this->billing_at ?? ""; } public function getBillingMonth(): int { return $this->billing_month ?? 0; } public function getPay(): string { return $this->pay ?? ""; } public function getContent(): string { return $this->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; } }