What are some best practices for creating a dynamic calendar in PHP that automatically extends for a year?

When creating a dynamic calendar in PHP that automatically extends for a year, it is best to use loops to iterate through each month and dynamically generate the calendar grid for each month. This approach allows for flexibility in handling leap years and varying month lengths.

<?php
$year = date('Y');
$months = range(1, 12);

foreach ($months as $month) {
    $days_in_month = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    echo "<h2>" . date('F', mktime(0, 0, 0, $month, 1, $year)) . "</h2>";
    echo "<table>";
    echo "<tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>";
    
    $first_day_offset = date('w', mktime(0, 0, 0, $month, 1, $year));
    echo "<tr>";
    
    for ($i = 0; $i < $first_day_offset; $i++) {
        echo "<td></td>";
    }
    
    for ($day = 1; $day <= $days_in_month; $day++) {
        echo "<td>$day</td>";
        
        if ((date('w', mktime(0, 0, 0, $month, $day, $year)) + 1) % 7 == 0) {
            echo "</tr><tr>";
        }
    }
    
    echo "</tr>";
    echo "</table>";
}
?>