IteratorAggregateを実装することで、自身のプロパティを外部イテレータとして提供できる。
<?php
class TimecardCollection implements IteratorAggregate
{
private $timeCards;
private $rate;
public function __construct($rate, $timeCards)
{
$this->rate = $rate;
$this->timeCards = $timeCards;
}
public function getIterator()
{
return new ArrayIterator($this->timeCards);
}
public function calculatePay()
{
$hours = array_reduce($this->timeCards, function($carry, $item) {
return $carry + $item;
}, 0);
return $this->rate * $hours;
}
}
$timeCardCollection = new TimeCardCollection(1250,
['mon' => 8, 'tue' => 8.5, 'wed' => '8.25', 'thu' => 8.25, 'fri' => 8]);
foreach($timeCardCollection as $key => $value) {
echo $key . ': ' . $value . PHP_EOL;
}
$payment = $timeCardCollection->calculatePay();
echo $payment;
mon: 8
tue: 8.5
wed: 8.25
thu: 8.25
fri: 8
51250
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。