Hallo,
ich habe es jetzt nochmals kurz (zu mehr leider keine Zeit) überflogen. Nachfolgendes noch:
2017 ist der hl. Abend gleich mit dem 4. Advent. Das wird bei dir verschluckt.
Ausgabe feiertage-test-1.php mit Datum 2017:
Sun : 03.12.2017 :: 1. Advent
KF : kein Feiertag
Sun : 10.12.2017 :: 2. Advent
KF : kein Feiertag
Sun : 17.12.2017 :: 3. Advent
KF : kein Feiertag
Sun : 24.12.2017 :: Heilige Nacht
KF : kein Feiertag
TVBW : Tanzverbot in Baden-Württemberg
Es sollten immer mehr Feiertage/Sondertage an einem Datum möglich sein. Könnte ja zB auch leicht passieren, das jemand im zB Vereinskalender div. spezielle "Datums" darüber abbilden will, oder Namenstage etc.. dann kann das schnell mal kollidieren (meine Meinung).
Muttertag, Advent, etc.. sind übrigens keine gesetzlichen Feiertage, das muss man sich in der Config als User selber richten wie "weit" man geht. Ev. will ja ein Tierfreund auch den "Tag des Hundes" feiern, dann steht ihm das natürlich frei.
Um das Ganze sauber trennen zu können, kann man bei mir mehr Configs - beliebig viele - laden. Bei meinen Beispielen habe ich für at und de die gesetzlichen Feiertage in jeweiligen Dateien und noch eine als Beispiel mit "besonderen Tagen" - wie Advent, Muttertag, etc.. also die nicht gesetzlichen. Aber wie gesagt, das muss eh jeder selbst entscheiden - wie weit er die Feiertage haben will. Ich denke zB auf einer jüdischen etc.. Seite sind wieder ganz andere "Gedenktage" interessant.. und so weiter.
Ich hab auch schon überlegt die Config auf eine SQLite Datei auszulagern.. Dann hätte man eine einzige Datei und PHP (da komm ich ja her) unterstützt diese von der Stange. Für das Datenvolumen ist das bei weitem ausreichend.. Das hab ich aber noch nicht fertig gedacht.. Und eine rohe Textdatei ist halt schon auch einfach und bequem zu formatieren.. Da reicht ein Editor ;)
Achja.. die Sprache wollte ich noch erwähnen... Ich wollte es ermöglichen zB Feiertage von Spanien (per Definition) auf einer deutschen Seite mit deutschen Namen ausgeben zu können. Daher die grundsätzliche Möglichkeit der Mehrsprachigkeit.
Und - was ich noch erwähnen möchte - aus deinem Interface kann man noch einiges herausholen. Zum Beispiel deine Testdatei 1 https://code.fastix.org/showFile.php?file=Projekte/PHP%3AFeiertage/test-feiertage-1.php sähe bei mir so in etwa aus:
require_once __DIR__ . '/HolidayCalendar.php';
$holiday->setDateTimezone( new DateTimeZone('Europe/Berlin') ); // optional -> Doku
$holiday = new HolidayCalendar('de.php');
$holiday->setFilter(['AU']);
$aHolidays = $holiday->createHolidaysList(2017);
foreach ($aHolidays as $aHoliday) {
printf('%s: %s<br>', $aHoliday['date'], $aHoliday['name']);
}
Zu mehr hatte ich leider keine Zeit. Die Ostern-Berechnung mit der csv-Datei hast du wegen HHVM so gemacht was ich gesehen habe. Ich Nutze dafür das aus diesem Beispiel/Comment hier: http://php.net/manual/en/function.easter-date.php#refsect1-function.easter-date-notes
(Sollte ich etwas in dem langen Thread übersehen haben was schon erwähnt wurde SORRY, ich muss gestehen hab ihn nicht zur Gänze gelesen.)
LG