1. <?php
  2. class TaskQueue {
  3. private $queue = [];
  4. public function enqueue(string $dateString): bool {
  5. // Validate date string format (YYYY-MM-DD)
  6. if (!preg_match("/^\d{4}-\d{2}-\d{2}$/", $dateString)) {
  7. return false; // Invalid date format
  8. }
  9. $date = date_create($dateString);
  10. if ($date === false) {
  11. return false; // Invalid date
  12. }
  13. $this->queue[] = $dateString;
  14. return true;
  15. }
  16. public function dequeue(): ?string {
  17. if (empty($this->queue)) {
  18. return null; // Queue is empty
  19. }
  20. return array_shift($this->queue);
  21. }
  22. public function getQueueSize(): int {
  23. return count($this->queue);
  24. }
  25. }
  26. //Example usage
  27. $queue = new TaskQueue();
  28. if ($queue->enqueue('2024-03-15')) {
  29. echo "Task enqueued for 2024-03-15\n";
  30. } else {
  31. echo "Invalid date format\n";
  32. }
  33. if ($queue->enqueue('2024-03-20')) {
  34. echo "Task enqueued for 2024-03-20\n";
  35. } else {
  36. echo "Invalid date format\n";
  37. }
  38. echo "Queue size: " . $queue->getQueueSize() . "\n";
  39. $nextTask = $queue->dequeue();
  40. if ($nextTask !== null) {
  41. echo "Processing task for: " . $nextTask . "\n";
  42. } else {
  43. echo "Queue is empty\n";
  44. }
  45. echo "Queue size: " . $queue->getQueueSize() . "\n";
  46. ?>

Add your comment