Sven Rautenberg: OOP: Design Patterns (Factory Method, Dependency Injection, ...)

Beitrag lesen

Moin!

Insofern kannst du eigentlich keine Klasse "Ini" haben, wenn die von "Config" erbt, sondern müsstes sie "Config_Ini nennen. Rein "zufällig" hat das Zend-Framework sowas schon vorgemacht: "Zend_Config" ist die Hauptklasse, aus der Konfigurationswerte herauskommen, und Zend_Config_Ini ist die Klasse, die Ini-Dateien einliest und parst. Die Frage wäre, ob Config_Ini von Config erben muss. Im Zend-Framework wird das gemacht, ich würde es aber nicht als zwingend ansehen.

Das ginge dann viell. in Richtung ZF-light (http://forum.de.selfhtml.org/my/?t=206131&m=1398677). Aber viell. geht die 2.0er Version ja in die Richtung. Viell. sieht es mit der Nutzung von Namespaces auch anders aus?

Dass hier ausgerechnet die Konfiguration als Aufhänger diskutiert wird, halte ich auch eher für unglücklich.

Es gibt eigentlich nur zwei Situationen:

1. Wenn man tatsächlich ein "Framework" programmiert, dann muss man die möglichen Anforderungen aller möglichen User abdecken und benötigt dafür ein entsprechend breit gefächertes Angebot an Features. Das Zend Framework erlaubt das Lesen von INI, XML, YAML und JSON-Konfigurationsdateien - das sollte alles mögliche abdecken.

2. Oder man programmiert für den eigenen, identifizierten Bedarf. Das macht viele Dinge sehr viel einfacher, weil man einfach ein paar Annahmen treffen darf, die sich in der Realität im Produktivbetrieb genau so, wie vorgesehen verhalten. Das Zend-Framework muss beispielsweise aktuell die PHP-Versionen ab 5.2.6 abdecken, also auch mit 5.3 funktionieren, aber ohne dessen Features nutzen zu können, und muss auch zuverlässig detektieren, welche eventuell optional vom Admin angebotenen oder deaktivierten PHP-Erweiterungen verfügbar sind. Wenn man kein Framework schreibt, sondern "nur" seine eigene grundlegende Klassenbibliothek, dann kann man sich diesen ganzen Kompatibilitätskrempel komplett sparen und seinen Code auf die Betriebsumgebung maßschneidern.

Das Konfigurationsproblem lässt sich also entweder aufwendig, komplex und fehleranfällig mit viel "universellem" Code lösen, oder sehr banal, einfach und performant mit sehr konkretem Code: Man kann einfach eine Liste von Konstantendefinitionen in PHP-Code tun und zu Beginn ausführen. Man kann auch eine "Konfigurationsklasse" mit einem statischen internen Array für die Werte befüllen und mit statischen Methoden auslesen. INI-oder gar XML-Dateien veredeln Konfigurationsparameter nicht.

Je schneller das Konfigurationsproblem mit einer funktionierenden Lösung versehen ist, desto schneller kann man sich um die wirklich wichtigen Probleme kümmern.

- Sven Rautenberg

0 70

OOP: Design Patterns (Factory Method, Dependency Injection, ...)

Der-Dennis
  • php
  1. 0
    Tom
    1. 0
      Der-Dennis
      1. 0
        Tom
    2. 0
      Tom
      1. 0
        Der-Dennis
    3. 0
      dedlfix
      1. 0
        Tom
        1. 0
          dedlfix
          1. 0
            Der-Dennis
            1. 0
              Der-Dennis
              1. 0
                jobo
                1. 0
                  Tom
                  1. 0
                    Der-Dennis
                    1. 0
                      Tom
                      1. 0
                        Der-Dennis
                        1. 0
                          Tom
                          1. 0
                            Der-Dennis
                            1. 0
                              Tom
                              1. 0
                                Der-Dennis
                2. 0
                  Der-Dennis
            2. 0
              Sven Rautenberg
              1. 0
                jobo
                1. 0
                  Der-Dennis
  2. 0

    Konfigurationsklassen für ein MVC-Framework

    Feldspar
    • programmiertechnik
    1. 0
      Der-Dennis
      1. 0
        Feldspar
        1. 0
          Der-Dennis
  3. 0
    dedlfix
    1. 0
      Der-Dennis
      1. 0
        dedlfix
        1. 0
          Der-Dennis
          1. 0
            dedlfix
            1. 0
              Der-Dennis
              1. 0
                dedlfix
                1. 0
                  Der-Dennis
  4. 0

    OOP: Design Patterns ... -> Zend Framework

    jobo
    1. 0
      Der-Dennis
      1. 0
        jobo
        1. 0
          Der-Dennis
          1. 0
            dedlfix
            1. 0
              jobo
  5. 0
    Sven Rautenberg
    1. 0
      jobo
      1. 1
        Sven Rautenberg
        1. 0
          jobo
          1. 0
            Der-Dennis
    2. 0
      Der-Dennis
      1. 0
        Sven Rautenberg
        1. 0
          Der-Dennis
      2. 0
        dedlfix
        1. 0
          Der-Dennis
          1. 0
            dedlfix
            1. 0
              Der-Dennis
              1. 0
                dedlfix
                1. 0
                  Der-Dennis
                  1. 0
                    dedlfix
                    1. 0
                      Der-Dennis
                      1. 0
                        dedlfix
                        1. 0
                          Der-Dennis
  6. 0

    Bin erst am Montag wieder da

    Der-Dennis
  7. 0
    hotti
    1. 0
      hotti
      1. 0
        Der-Dennis
        1. 0
          hotti
          1. 0
            Der-Dennis
            • perl
          2. 0
            dedlfix
            1. 0
              Der-Dennis
        2. 0
          hotti
          1. 0
            Der-Dennis
            • perl