Ergebnis 1 bis 6 von 6

Thema: compile() vs. generate()

  1. #1
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Frage compile() vs. generate()

    Hi zusammen,

    eine Sache verwirrt mich noch ein wenig: Modulgenerierung. Es geht um die Methoden Module::generate() und Module::compile(). In der Klasse Module wird compile() von generate() aufgerufen, compile() ist als abstract definiert.

    Einige Extensions lassen compile() ganz weg bzw. leer und überschreiben generate(), teilweise wird parent::generate() aufgerufen.

    Wenn ich nichts übersehen habe, wird im Core immer nur generate() aufgerufen, und solange die Methode nicht überschrieben wird, wird auch noch compile() aufgerufen (die auf jeden Fall erstellt werden muss, da sie abstract ist).

    Wie soll man jetzt am besten bei eigenen Modulen vorgehen? Die nötigen Ausgaben bzw. Vorbereitungen dafür in compile() schreiben, generate() weglassen (damit die Elternmethode aufgerufen wird)? Oder generate() erweitern (und die Elternmenthode aufrufen) oder überschreiben? Was kommt oder was sollte in compile() und generate() rein? Gibt es dafür feste Regeln, Konventionen, oder ist das vollkommen egal?
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  2. #2
    Contao-Nutzer Avatar von david enke
    Registriert seit
    26.06.2009.
    Beiträge
    96

    Standard

    Wenn dir die Funktionsweise der, aus der Elternklasse geerbten Funktion ausreicht, brauchst du sie ja nicht überschreiben.

    Darin liegt ja nun der größte Vorteil Projektorientierter Programmierung.

    Oder verstehe ich da bei dir was falsch?!

  3. #3
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    827

    Standard

    Hallo FloB,
    schau die mal die Präsentation Christian de la Haye vom letzten Usertreffen an. Darin erläutert er die Entwicklung anhand der Erweiterung ch_flowplayer.
    http://de.contaowiki.org/FrankfurtAgenda

    @david enke
    "Projektorientierte Programmierung" - klingt auch nicht schlecht...

    Viele Grüße
    ChrMue
    Geändert von ChrMue (04.07.2009 um 20:10 Uhr)

  4. #4
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Jo, Christians Präsentation habe ich gesehen. Interessanterweise erweitert er hier auch die generate()-Methode, und zwar um eine separate Ausgabe für das Backend zu machen sowie eine leere Dateiliste abzufangen. Aber geht das nicht auch alles in compile()?

    Mein Problem ist, dass ich nicht genau weiß, was "best practice" bei den Modulen ist. IMO reicht es ja aus, alles in compile() zu packen, oder? Mir scheint das ganze eine Sache der persönlichen Vorliebe zu sein. Ich wollte nur nochmal nachfragen, nicht, dass ich da etwas übersehe .
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  5. #5
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Standard

    Die generate-Methode wird vom FrontController aufgerufen und ist für das Ergebnis des Modules bzw. des Inhaltselements zuständig.
    Sie ist in den Klassen Module bzw. ContentElement vordefiniert, weil sie sehr oft ähnliche Dinge erledigen muss: Template-Instantiieren, die üblichen Abstand davor/danach einfügen etc.

    Über compile() wird diese generate() nur mit weiterer Logik bestückt und zwar der üblicherweise jeweils verschiedenen Logik. Compile ist also praktisch nur eine Hilfsmethode für die Module-Spezifika und deshalb auch abstrakt.

    Überschrieben wird generate() dann, wenn man ein anderes Template benötigt (Backend-Platzhalter) oder Logik vor der Instantiierung des Templates einbauen muss.

  6. #6
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Danke, Psi! Deine Antwort hat meine letzten Unklarheiten beseitigt.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Allgemeine frage zu den Functionen generate() and compile()
    Von gzocker im Forum Entwickler-Fragen
    Antworten: 4
    Letzter Beitrag: 06.03.2017, 20:39
  2. compile und dca?
    Von schman im Forum Entwickler-Fragen
    Antworten: 5
    Letzter Beitrag: 23.02.2011, 10:47
  3. generate()-Fkt von ModuleArticle erweitern/überschreiben
    Von Dani im Forum Entwickler-Fragen
    Antworten: 9
    Letzter Beitrag: 09.09.2010, 19:14
  4. compile() wird nicht ausgeführt
    Von dirkweimar im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 27.12.2009, 15:20

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •