dedlfix: Konstruktor: Klasse erst später definiert

Beitrag lesen

Tach!

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.

Definiere "noch nicht existent". Unterscheide bitte außerdem zwischen Klasse und Objekt.

PHP macht zunächst einen Compilierlauf, bevor es mit der Ausführung anfängt. Klassen und Funktionen, die später im Script stehen, sind bereits "weiter oben" bekannt. Zudem ist es kein großer Akt, Klassen und Funktionen zuerst zudefinieren oder die Dateien zu inkludieren, in denen sie stehen. Klassen sind also immer da. Anders sieht das eventuell mit Objekten aus, also Instanzen der Klassen.

Ein Beispiel: Forum - Rechte

Erklär zu dem Beispiel bitte die Anforderung ohne auf technische Implementierungsdetails einzugehen. Vielleicht kann man den Knoten ja anderweitig entwirren. Zum Beispiel so, dass ein Rechte-Objekt einmalig für den aktuellen User angelegt wird und dieses dann an die Komponenten weitergereicht wird, die es benötigen.

Mit einer Klasse 'Forum' werden erstmal Foren-IDs gesammelt. Diese benötigt die Klasse 'Rechte' um die zu den Foren-IDs passenden Rechte zu laden. Die Klasse 'Rechte' wird widerum in der Klasse 'Forum' wieder benötigt um Foren-Features wie Themabewertung, Umfragen bspw. an- oder auszuschalten.

Das hört sich so an, als ob zu deiner Rechte-Klasse lediglich eine einzelne Instanz benötigt wird, die Rechteabfrage also mehr oder weniger statisch erfolgt.

Wie kann ich die Klasse 'Rechte' jetzt SAUBER in die Klasse 'Forum' per Referenz reinladen ?

Um Referenzen musst du dir im Prinzip keine Gedanken machen. Sie werden bei Objekten ab PHP5 immer verwendet, wenn du nicht explizit gegen sie arbeitest. Sobald du also eine Variable hast, die auf ein Objekt verweist, hast du eine Referenz.

dedlfix.

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