Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-Klasse für nationale/regionale Feiertage mit SQLite-DB als Konfiguration

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von protestix Beitrag anzeigen
    Da schreibt jemand ein Script für sich, stellt es der Allgemeinheit kostenlos zur Verfügung und muss nur Kritik einstecken.
    Wenn es einem nicht gefällt, ein Fork draaus machen und abändern oder aber ignorieren und sich anderen Scripten zuwenden.
    Hmm? Ich dachte hier geht es neben der Vorstellung auch darum eine Diskussion zu führen (siehe 1. Satz im 1. Post). Wer einfach nur ein Script an den Mann bringen will findet dafür doch sicherlich einen geeigneteren Platz als den Forenbereich "Software-Design".
    [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

    Kommentar


    • #17
      Oh - dann lehne ich mich mal wieder zurück und verfolge das Ganze lieber.

      Kommentar


      • #18
        protestix : Nett von dir das du mir hier beistehen möchtest. Jedoch habe ich ja selbst zu Vorschlägen und Kritik aufgefordert wie Lotti schon bemerkt hat.

        Freue mich wie immer auf Feedback sein es weitere Hinweise, Anregungen, Bedenken oder Kritik.
        Fasse die Beiträge auch nicht als Prügel auf sondern als Meinung von Forenusern mit dem Blickwinkel ihrer Programmiererfahrung. Mein Blickwinkel ist als Quereinsteiger oft etwas Abseits von dem was so allgemein als "Best practice" gilt.
        Für mich ist dies ein reines Hobbyprojekt um zu Testen, ob das Eingangs vorgestellte Konzept umsetzbar ist.
        Die Tipps hier gehen mehr oder weniger alle in die Richtung das Ganze etwas professioneller zu gestalten. Ob und wie weit ich diese Anregungen dann umsetze ist allein meine Entscheidung. Ich stehe da nicht unter Druck.

        LG jspit

        Kommentar


        • #19
          Am reizvollsten wäre doch, gleich eine SQL Tabelle zu erstellen(erstellen zu lassen), wo zumindest alle europäischen Feiertage nach Ländern schon drin stehen, vielleicht für die nächsten 15-20 Jahre.
          Das könnte man dann dahingehend nutzen, das man als Shopbetreiber und Versender von Produkten innerhalb der EU dem Kunden die Zustellung errechnen könnte.
          Ich könnte mir vorstellen, das viele Shops das implementieren würden.

          Mann bräuchte die Berechnung nur ein mal durchlaufen lassen um die Tabelle zu erstellen..

          Das nur mal als Idee.



          Kommentar


          • #20
            Zitat von protestix Beitrag anzeigen
            Am reizvollsten wäre doch, gleich eine SQL Tabelle zu erstellen(erstellen zu lassen), wo zumindest alle europäischen Feiertage nach Ländern schon drin stehen, vielleicht für die nächsten 15-20 Jahre.
            Das hatte ich bzgl. meiner Lib (Niirrty\Holiday) auch schon mal drüber nachgedacht. Hab es aber wieder verworfen. Da müsste man auch zu jeden Holiday einen Ziestempel hinzufügen wann es das letzte mal aktualisiert wurde. Feiertage ändern sich.

            Seit ich mit meiner Lib angefangen habe wurden in den paar wenigen Ländern die momentan abgedeckt sind (at, ch, cz, de, fr, it, jp, nl, uk) ein Feiertag hinzugefügt 2 verändert und 1 entfernt.

            Es ist technisch kein Problem das zu machen aber der damit erzeugte Overhead würde nur dann einen zusätzlichen Zweck erfüllen, wenn man für mehrere Länder und Jahre die Feiertage gleichzeitig braucht und der Einsatzort ein eher schwachbrüstiges System ist.
            Ansonsten sind die Feiertage genauso schnell berechnet wie aus der DB ausgelesen.

            Kommentar


            • #21
              Feiertage ändern sich.
              Bsp. Spanien legt einige jedes Jahr neu fest.

              Achtung: In Spanien werden die Feiertage jedes Jahr neu festgelegt !

              Spanien kennt nationale, regionale und lokale Feiertage. Jede Gemeinde kann maximal 14 Feiertage bestimmen, wobei bis zu neun von der Landesregierung vorgegeben werden.

              Abweichungen zu unserer Liste sind also möglich! Vor allem, wenn ein Feiertag auf das Wochenende fällt, prüfen Sie bitte dessen Gültigkeit genauer!
              https://www.feiertagskalender.ch/index.php?geo=3476
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #22
                Das ist für eine programmierte Lösung ja die Hölle. Nichts ist schlimmer als ein System kontinuierlich pflegen zu müssen.

                hausl auf der Seite schau ich auch immer nach und habe mich schon gefragt wie die das gelöst haben. Für die Region(z.B.: Madrid) kann man ja einen CSV Export herunterladen, der einen Zeitraum von 3 Jahren erfasst. Das ist ja dann für die Katz.

                Kommentar


                • #23
                  Bei den Feiertagen kommt man um eine kontinuierliche Pflege der Daten nicht umhin. Wenn das dann noch in den Skripten bei womöglich mehreren Kunden erfolgen muss ist dies richtig Arbeit.
                  Daher mein Versuch die Skripte möglichst nicht anzufassen und diese Information in einer Konfigurationsdatei (Bei mir eben eine kleine SQLite-DB) unterzubringen.
                  Diese Datei könnte dann zentral gepflegt werden und als Download bereitgestellt werden. Oder in etwa so in das Projekt integriert werden:
                  PHP-Code:
                  /*
                   * get Config from a URL
                   */
                  $url "http://example.com/data/JspitHoliday.sqlite";
                  $tmpfname tempnam(sys_get_temp_dir(), "holiday.sqlite");
                  $copyOk copy($url,$tmpfname);

                  $holidaysDE = new JspitHoliday('de',$tmpfname); 
                  Hab das mal mit meiner Test-DB probiert, funktioniert hervorragend.

                  LG jspit



                  Kommentar


                  • #24
                    Zitat von hausl Beitrag anzeigen
                    Bsp. Spanien legt einige jedes Jahr neu fest.
                    Gut das ich das noch nicht angefangen habe zu integrieren. Spanier wird dann wohl eines der letzten Länder Danke für die Info!

                    Kommentar


                    • #25
                      Messier 1001 : Und ich möchte mich bei dir bedanken. Die Termine für Feiertage einzelner Länder findet man relativ schnell im Netz, jedoch sind diese teilweise widersprüchlich. Zum Testen für mein Projekt stand mir da mit Niirrty.Holiday eine solide Datenbasis zur Verfügung.

                      Kommentar


                      • #26
                        Ich hab mir mal angeschaut wie einige Feiertage für Spanien mit den obigen Konzept umgesetzt werden könnte.
                        Nicht nur das bestimmte Feiertage Jahr für Jahr neu festgelegt werden können, auch die Regionalstruktur (Liste der Provinzen Spaniens) stellt eine Herausforderung dar.
                        Spanien ist in 17 Autonome Gemeinschaften und 2 Autonome Städte (Ceuta und Melilla) gegliedert (grob vergleichbar mit den Bundesländern in D). Jede dieser Autonomen Gemeinschaften haben meist mehrere Provinzen unter sich. Insgesamt sind es 50 Provinzen. In der 4.Ebene sind die Gemeinden angesiedelt.
                        Die Umsetzung soll am Beispiel für den Feiertag Epiphany (Heilige Drei Könige) gezeigt werden. Dieser Feiertag gilt dort landesweit. Da der Eintrag schon für AT und bestimmte Bundesländer in D schon vorhanden ist, muss nur die Region ES zugefügt werden:
                        Code:
                           month: 1
                           day: 6
                           special:
                           region: DE-BW,DE-BY,DE-ST,AT,ES
                        Wenn jedoch Epiphany auf einen Sonntag fällt, dann ist für einige Autonome Gemeinschaften und einzelne Provinzen am Montag darauf (7.1) ein zusätzlicher Feiertag angesagt.
                        Für die Autonomen Gemeinschaften und Provinzen existieren in der ISO-Norm 3166:ES schon Abkürzungen die hier benutzt werden.
                        Mit dem Bezeichner ES-AN werden da alle 8 Provinzen der autonomen Gemeinschaft Andalusien erfasst. Der Bezeichner ES-AS-O steht für die Provinz Asturien (O) in der gleichnamigen Gemeinschaft Asturien (AS). Wenn die Gemeinschaft nur aus einer Provinz besteht, kann auch als Bezeichner ES-O oder nur ES-AS genommen werden., solange dies Eindeutig ist.
                        Dieser bedingte Feiertag wird dann wie folgt eingetragen:
                        Code:
                           month: 1
                           day: 7
                           special: {{?D=Mon}}
                           region: ES-AN,ES-AR,ES-CE,ES-CM,ES-MD-M,ES-ML,ES-AS-O,ES-CB-S
                        Dem abgestuften Regionalkonzept kommt entgegen, das mit dem Eintrag für eine Autonome Gemeinschaft in der Regel die Einträge für mehrere Provinzen erspart bleiben.
                        Insgesamt schätze ich ein das dies auch für Spanien umsetzbar ist, der Aufwand ist jedoch gewaltig. Bin gespannt, ob Messier 1001 die Zeit findet die Feiertage Spaniens für seine Klasse einzupflegen.

                        LG jspit

                        Kommentar


                        • #27
                          Sowas würde ich eher als laufendes Service sehen und nicht als Klasse. Deswegen wäre ja auch ein Loader Interface praktisch, damit man die Daten auch aus einer Service-API holen könnte

                          Kommentar


                          • #28
                            Wie die Daten für meinen Fall das ganz einfach als Service bereitgestellt werden könnte habe ich bereits im Beitrag #23 gezeigt. Um dies etwas hübscher zu machen kann das noch als Webservice gestaltet werden.

                            Kommentar


                            • #29
                              Ich glaube Hellbringer meint nicht die sqlite Datenbank als Webservice anzubinden, sondern über ein LoaderInterface ein vorhandenen Service wie z.B. Outlook Feiertagskalendar etc.

                              Kommentar


                              • #30
                                Zitat von jspit Beitrag anzeigen
                                Für die Autonomen Gemeinschaften und Provinzen existieren in der ISO-Norm 3166:ES schon Abkürzungen die hier benutzt werden.
                                Ich hatte am Anfang auch auf Abkürzungen für Regionen gesetzt, aber das funktioniert so nicht da es Länder mit Regionen gibt in denen keine Abkürzungen vorgesehen sind.

                                Deswegenen hab ich mich mit numerischen Indexen zufrieden gegeben. Gefällt mir aber trotzdem noch nicht wirklich. Vieleich sollte man auch beide ermöglichen.

                                Zitat von jspit Beitrag anzeigen
                                Dem abgestuften Regionalkonzept kommt entgegen, das mit dem Eintrag für eine Autonome Gemeinschaft in der Regel die Einträge für mehrere Provinzen erspart bleiben.
                                Insgesamt schätze ich ein das dies auch für Spanien umsetzbar ist, der Aufwand ist jedoch gewaltig. Bin gespannt, ob Messier 1001 die Zeit findet die Feiertage Spaniens für seine Klasse einzupflegen.
                                Spanien überlass ich den Leuten die mehr Zeit haben wie ich.

                                Hab am WE meine Feuture für nicht arbeitsfreie Feiertage fertig gestellt und angefangen einen Loader zu bauen um mit unterschiedlichen Quellen und Formaten klar kommt. Da hab ich genug zu tun

                                PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                                Kommentar

                                Lädt...
                                X