<?php
function playMelody(AlarmClock $alarmClock, DateTime $currentTime): void {
// Получим ближайшее время срабатывания, ближайшей активной тревоги
$nearestAlarmTime = $alarmClock->getNearestAlarmTime();
if ($nearestAlarmTime) {
// Время совпадает с текущим? Проигрываем
if ($nearestAlarmTime == $currentTime) {
// Проиграл {}
// Удалим одноразовые, сработавшие тревоги
$alarmClock->deleteDisposableAlarms();
playMelody(AlarmClock $alarmClock, DateTime $currentTime);
}
}
}
playMelody($alarmClock, new DateTime);
PD9waHAKCmZ1bmN0aW9uIHBsYXlNZWxvZHkoQWxhcm1DbG9jayAkYWxhcm1DbG9jaywgRGF0ZVRpbWUgJGN1cnJlbnRUaW1lKTogdm9pZCB7CgkKCS8vINCf0L7Qu9GD0YfQuNC8INCx0LvQuNC20LDQudGI0LXQtSDQstGA0LXQvNGPINGB0YDQsNCx0LDRgtGL0LLQsNC90LjRjywg0LHQu9C40LbQsNC50YjQtdC5INCw0LrRgtC40LLQvdC+0Lkg0YLRgNC10LLQvtCz0LgKICAgICRuZWFyZXN0QWxhcm1UaW1lID0gJGFsYXJtQ2xvY2stPmdldE5lYXJlc3RBbGFybVRpbWUoKTsKICAgIAogICAgaWYgKCRuZWFyZXN0QWxhcm1UaW1lKSB7CiAgICAJCiAgICAJLy8g0JLRgNC10LzRjyDRgdC+0LLQv9Cw0LTQsNC10YIg0YEg0YLQtdC60YPRidC40Lw/INCf0YDQvtC40LPRgNGL0LLQsNC10LwKICAgIAlpZiAoJG5lYXJlc3RBbGFybVRpbWUgPT0gJGN1cnJlbnRUaW1lKSB7CiAgICAJCQogICAgCQkvLyDQn9GA0L7QuNCz0YDQsNC7IHt9CiAgICAJCS8vINCj0LTQsNC70LjQvCDQvtC00L3QvtGA0LDQt9C+0LLRi9C1LCDRgdGA0LDQsdC+0YLQsNCy0YjQuNC1INGC0YDQtdCy0L7Qs9C4CiAgICAJCSRhbGFybUNsb2NrLT5kZWxldGVEaXNwb3NhYmxlQWxhcm1zKCk7CiAgICAJCQogICAgCQlwbGF5TWVsb2R5KEFsYXJtQ2xvY2sgJGFsYXJtQ2xvY2ssIERhdGVUaW1lICRjdXJyZW50VGltZSk7CiAgICAJfQogICAgCQogICAgfQoKCn0KCnBsYXlNZWxvZHkoJGFsYXJtQ2xvY2ssIG5ldyBEYXRlVGltZSk7