Der-Dennis: OOP: Aufteilung der Aufgaben innerhalb einer Anwendung

Beitrag lesen

Hey dedlfix,

auch Dir danke für Deine Antwort.

Die index.php ist die einzige ausführbare Datei, die direkt mittels HTTP aufgerufen werden kann. Dies wird mittels .htaccess-Direktiven ermöglicht.
In dieser Datei wird lediglich der Bibliotheks-Pfad in den PHP-Include-Path integriert,

Geht das nicht bereits in der Grundkonfiguration von PHP oder in einer Per-Verzeichnis-Konfiguration (.htaccess bei mod_php, .user.ini für CGI ab PHP 5.3.0)?

Ich habe ehrlich gesagt keine Ahnung. Werd gleich mal danach suchen.

die Entwicklungsumgebung als Konstante definiert

Was willst du damit bezwecken? Soll das ein abfragbares Flag sein, ob Debug-Code ausgeführt werden soll, wenn du gerade am Entwickeln bist, nicht jedoch im Produktivsystem?

Genauso ist es. Abhängig von der Umgebung werden unterschiedliche Konfigurationen verwendet.

Diese Basis-Klasse besteht im Wesentlichen aus drei Teilen:

  1. Der Konstruktor: Hier werden alle für die Anwendung zwingend erforderlichen Aufgaben durchgeführt (wie z.B. das Auslesen der Config-Datei, Initialisierung des Autoloaders und Fehlerbehandlung, etc.)

Durchgeführt oder angestoßen? Monster-Methode oder Aufrufe spezialisierter Methoden?

Angestoßen trifft es wohl besser. Im Konstruktor befinden sich eigentlich nur weitere Methodenaufrufe im Stil von

  
public function __construct($configPath = '')  
{  
  $this->initConfig();  
  $this->initErrorHandling();  
  $this->initAutoloader();  
  // usw.  
}  

Also keine Monster-Methode.

  1. Der Bootstrap-Prozess: Hier werden alle Aufgaben ausgeführt, die für die allgemeine Anwendung nicht zwingend sind, für die speziellere aber schon. Hierzu zählt beispielsweise die Authentifizierung und Autorisierung sowie das weitere Laden von Plugin-Klassen.

Woher weißt du denn zu dem Zeitpunkt schon, ob eine Authentifizierung überhaupt notwendig ist und wenn ja, wofür man autorisiert sein muss?

Auch hier sollte ich besser "angestoßen" bzw. "geladen" oder "initialisiert" verwenden. Im Front-Controller wird dies erst tatsächlich ausgeführt.

Und nachdem der Action-Controller tätig, was passiert dann? Führt der Action-Controller auch die View aus oder gibt er eine fertig präparierte View zurück, die der Front-Controller dann ausführt? Letzeres ist zum Beispiel für TDD sinnvoll. Ein Action-Controller kann besser getestet werden, wenn er ein View-Objekt mit einzeln prüfbaren Daten zurückgibt statt einer fertigen Textwurst oder einer bereits erfolgten Ausgabe.

Es gibt sozusagen eine "globale View" und eine "spezielle View". Ein Controller bzw. dessen Aktionen dürfen nur Werte in Ihre eigene, spezielle View speichern. Die "globale View" kann also aus mehreren dieser speziellen bestehen. Der Front-Controller gibt dann letztendlich das "Zeichen", dass die View zusammengesetzt und ausgegeben wird.

Was am Ende sinnvoll und praktisch ist und was nicht, wirst du im Laufe der Zeit als Erfahrung sammeln. Auch - und das ist der entscheidende Punkt, um deine gesamte Absicht bewerten zu können - kommt es auf das konkrete Ziel an. Willst du nur mal üben oder ein konkretes (wichtiges) Projekt realisieren?

Es geht um nichts konkretes. Wie gesagt, ich arbeite schon länger mit OOP und MVC und möchte einfach auf dem Laufenden bleiben bzw. andere Meinungen hören. Man lernt ja nie aus - besonders nicht in diesem Forum :-)

Was ist das für eine Bibliothek? Eine selbst erstellte oder eine von der Stange - welche?

Eine selbsterstellte, wobei sie sich auch bereits fertiger Klassen und Methoden aus beispielsweise dem Zend Framework bedient. Da kommt alles rein, was ich für sinnvoll halte oder sich für mich etabliert hat. Und wenn ich ein neues Proekt starte, kommt erstmal nur die "Standard-Anwendung" in den Bibliotheks-Ordner und anschließend dann - wenn benötigt - weitere Komponenten.

Vielen Dank auch für Deine weitere Ausführung. Da kann man ja nicht mehr viel zu sagen.

Gruß, Dennis

1 60

OOP: Aufteilung der Aufgaben innerhalb einer Anwendung

Der-Dennis
  • programmiertechnik
  1. 0
    Sven Rautenberg
    1. 0
      Der-Dennis
      1. 5
        Sven Rautenberg
        1. 0
          Der-Dennis
        2. 0
          fastix®
  2. 2
    fastix®
    1. 0
      Der-Dennis
      1. 0
        fastix®
        1. 0
          Der-Dennis
      2. 0
        Sven Rautenberg
        1. 0
          Der-Dennis
        2. 0
          fastix®
          1. 0
            Tom
            1. 1
              fastix®
              1. 0
                dedlfix
                1. 0
                  fastix®
              2. 0
                Sven Rautenberg
  3. 1
    Tom
    1. 0
      Der-Dennis
      1. 0
        Tom
        1. 2
          Der-Dennis
          1. 0
            Tom
            1. 0
              Der-Dennis
              1. 0
                Tom
                1. 0
                  Der-Dennis
                  1. 0
                    fastix®
                    1. 0
                      flowh
                      1. 0
                        Tom
                        1. 0
                          fastix®
                    2. 0
                      Der-Dennis
        2. 0
          Christian Seiler
          1. 0
            Tom
    2. 3
      Blaubart
      1. 0
        Tom
        1. 5
          Blaubart
  4. 1
    dedlfix
    1. 0
      Der-Dennis
      1. 0
        Der-Dennis
        1. 0
          fastix®
          1. 0
            Der-Dennis
            1. 0
              dedlfix
              1. 0
                Der-Dennis
                1. 0
                  fastix®
                  1. 0
                    Der-Dennis
                    1. 0
                      fastix®
                      1. 0
                        Der-Dennis
                        1. 0
                          fastix®
                          1. 0
                            Der-Dennis
  5. 0
    hotti
    1. 0
      Der-Dennis
      1. 0
        hotti
        1. 0
          Der-Dennis
          1. 1
            hotti
            1. 0
              Der-Dennis
        2. 0
          fastix®
          1. 0
            Tom
            1. 0
              fastix®
    2. 0
      dedlfix
  6. 0

    Danke für Eure Meinungen!

    Der-Dennis