mInfo = $card_info; } public function card_id(): int { return intval($this->mInfo['card_id']); } public function member_id(): int { return intval($this->mInfo['member_id']); } public function card_type(): int { return intval($this->mInfo['card_type']); } public function start_time(): int { return intval($this->mInfo['start_time']); } public function end_time(): int { return intval($this->mInfo['end_time']); } public function total_amount(): float { return round(doubleval($this->mInfo['total_amount']), 2); } public function left_amount(): float { return round(doubleval($this->mInfo['left_amount']), 2); } public function discount(): float { return round(doubleval($this->mInfo['discount']), 2); } public function add_time(): int { return intval($this->mInfo['add_time']); } public function state(): int { return intval($this->mInfo['state']); } abstract public function usable(): bool; abstract public function deduct(int $cent); abstract public function calc(int $cent); }