【PHP/演習問題】オーバーロード[1]

【PHP/演習問題】オーバーロード[1]

問題

次の実行結果になる会計クラスを扱うプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 会計クラス(Bill)を作成する
  • 会計クラスはcalcメソッドを持ち、引数で与えられた複数料金の合計金額を出力する
  • calcメソッドの引数は可変長引数リストとする
  • calcメソッドに与えられた引数が3つ以上の場合、合計金額を5%割引する
  • calcメソッドを2回呼び出し、各呼び出しの引数は次の通りとする
    1回目 : 1000, 2300
    2回目 : 1000, 2300, 3500
合計金額 : 3300円
合計金額 : 6460円

解答例

<?php

class Bill {
    
    public function calc(...$prices) {
        
        $total = 0;
        
        foreach( $prices as $price ) {
            $total += $price;
        }
        
        if( count($prices) >= 3 ) {
            $total *= 0.95;
        }
        
        echo "合計金額 : ".$total."円\n";
    }
    
}

$bill = new Bill();

$bill->calc(1000, 2300);
$bill->calc(1000, 2300, 3500);

?>