hotti: Konstruktor: Klasse erst später definiert

Beitrag lesen

Hallo,

Ich habe ein Klasse head, wo ich per Konstruktor andere Variablen und Klassen hereinlade. Mein Problem ist, dass die Klasse head später im Programm eine andere Klasse namens underClass benötigt und mit dieser auch arbeitet! Diese kann ich ja nicht wie bei der Definition von head hereinladen, da diese noch nicht existent ist. underClass benötigt wiederum die Klasse $head selber.

Ganz schlechter Ansatz (s. Anm.). Sorge dafür, dass _alle_ Klassen, die im Laufe der Anwendung gebraucht werden, von Anfang an zur Verfügung stehen (im Konstruktor Deiner Klasse 'head'). Nutze ggf. Vererbung oder Delegierung von Methoden anderer Klassen an die Instanz der eigenen Klasse.

Anmerkung: Solche Abhängigkeiten führen zu einem schwer durchschaubaren und außerordentlich wartungsunfreundlichen Code, kurzum: Chaos.

Ein Beispiel: Forum - Rechte

Mein Tipp hierzu: Ausgehend davon, dass ein Login vorliegt, steht die Berechtigungsgruppe in der Login- bzw. Sessiontable mit der SessionID als Primary Key. Mit der SID wird die Session ausgelesen und als Attribut an die Instanz der eigenen Klasse gebunden. Damit steht praktisch über die gesamte Anwendung hinweg zur Verfügung:

  • Login-Name
  • Benutzergruppe
  • ggf. weitere Felder

Hotti

0 55

Konstruktor: Klasse erst später definiert

mod
  • php
  1. 0
    mod
  2. 0
    dedlfix
    1. 0
      mod
      1. 0
        mod
        1. 1
          Sven Rautenberg
          1. 0
            mod
          2. 0
            mod
            1. 0
              dedlfix
              1. 0
                mod
                1. 0
                  Sven Rautenberg
                  1. 0
                    mod
                    1. 0
                      dedlfix
            2. 0
              Sven Rautenberg
              1. 0
                hotti
                1. 0
                  Sven Rautenberg
                  1. 0
                    hotti
                    1. 2
                      Sven Rautenberg
              2. 0
                mod
        2. 0
          dedlfix
          1. 0
            mod
            1. 0
              hotti
              1. 0
                mod
                1. 0
                  hotti
                  1. 0
                    dedlfix
                    1. 0
                      hotti
                      1. 0
                        dedlfix
                        1. 0
                          hotti
                          1. 0
                            dedlfix
                            1. 0
                              Sven Rautenberg
                              1. 0
                                hotti
                                1. 0
                                  dedlfix
                                  1. 0
                                    hotti
                                    1. 0
                                      dedlfix
                              2. 0
                                asdf
                            2. 0
                              hotti
                              1. 0
                                Sven Rautenberg
                                1. 0
                                  hotti
                                  1. 1
                                    Sven Rautenberg
                                    1. 0
                                      hotti
                                2. 1
                                  asdf
                              2. 0
                                dedlfix
                                1. 0
                                  hotti
                                  1. 0
                                    dedlfix
                                    1. 0
                                      hotti
                                      1. 1
                                        Sven Rautenberg
            2. 0
              dedlfix
      2. 0
        dedlfix
        1. 0
          Tom
          1. 0
            dedlfix
  3. 0
    hotti
    1. 0

      @mod Vorsicht

      Christopher
      1. 0
        hotti
        1. 0
          Tom
          1. 0
            hotti