Ergebnis 1 bis 9 von 9

Thema: Wohin mit eigenen Hilfsfunktionen?

  1. #1
    Contao-Nutzer
    Registriert seit
    17.09.2010.
    Beiträge
    161

    Standard Wohin mit eigenen Hilfsfunktionen?

    Hallo,

    ich hab mal ne ganz simple Frage: Wo bringt man am besten Hilfsfunktionen unter? Ich hab' so ein paar String- und Datumsfunktionen und ähnliches, die ich in Modulen, CEs, Templates etc. benutze. Wo kann ich die denn mal elegant unterbringen? Sieht Contao irgendeine Datei (außer config.php) vor, die immer geladen wird und vielleicht sogar für sowas gedacht ist?

    Danke!

  2. #2
    Contao-Nutzer Avatar von poldixd
    Registriert seit
    12.07.2012.
    Ort
    Berlin
    Beiträge
    51

    Standard

    ich erstelle mir immer eine \classes\Helper.php

    Die sieht so aus:

    PHP-Code:
    namespace TollesModul;

    class 
    Helper extends \Backend
    {
        public function 
    __construct()
        {
            
    parent::__construct();
        }

        public function 
    tueDas()
        {
            return 
    'das';
        }

    Später kann ich die dann so aufrufen:

    PHP-Code:
    $this->import('Helper');
    $this->Helper->tueDas(); 
    Ob das der beste Weg ist, weiß ich nicht, aber ich bin gespannt auf andere Kommentare. Hab mir das im Core Modul abgeguckt.

  3. #3
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Der Weg ist insofern falsch als dass deine Klasse - zumindest in deinem Beispiel - unnötigerweise "Backend" erweitert

    Wir haben für all die Helferlein, die wir immer mal wieder benötigen "haste" gebaut: https://github.com/codefog/contao-haste
    Viele Helferlein die wir für Isotope brauchen, haben wir da ausgelagert, damit man sie in anderen Projekten wiederverwenden kann.
    Vielleicht hilft dir das als Grundidee wie du deine Helferlein zusammenstiefeln könntest?
    Bzw. falls es etwas ist, das wir alle ganz gut gebrauchen könnten, könntest du auch einen Pull Request machen und es könnte den Weg in "haste" finden
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  4. #4
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Ich schmeiß mal noch unsere Helper mit dazu.

    https://github.com/slashworks/contao...rs/tree/v2.0.0

    Man Entschuldige die noch nicht komplette Dokumentation
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  5. #5
    Contao-Nutzer
    Registriert seit
    17.09.2010.
    Beiträge
    161

    Standard

    Den Weg von poldixd finde ich insofern nicht hinreichend weil ich immer noch $this->import() brauche - ich weiß aber gar nicht, ob ich in dem Moment, in dem ich meine Helferlein brauche einen bzw. welchen $this-Kontext habe.

    Bei der config.php (die ich nun aber nicht für eine Funktionensammlung / Klasse missbrauchen will) weiß ich, dass sie importiert wird. Bei allen anderen Dateien (element, models, templates etc.) weiß ich das nicht - abgesehen davon sind diese alle modulspezifisch und insofern eigentlich ungeeignet für globale Hilfsfunktionen.

    Man kann im Ordner "modules" einen Ordner "helper" anlegen mit nur einer Datei config/config.php in der statt des üblich $GLOBALS-Krams dann die Hilfsfunktionen stehen. Aber irgendwie finde ich das nicht besonders schön...

    Was ich lieber hätte, wäre ein updatesicherer Ordner aus dem einfach alle Dateien included werden. Aber so einen Ordner habe ich nicht gefunden. Deswegen die ursprüngliche Frage...

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Ich lagere auch ab und zu was in Helper Klassen aus, aber ich importiere nicht, ich erbe die dann.
    Etwa in der Art und Weise:
    http://www.contao.glen-langer.de/Hilfsklasse.html
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Erben macht aber nur dann Sinn, wenn die Helper Methode nur spezifisch für diesen Teil der Applikation gedacht ist. Generell wird Vererbung viel zu oft gebraucht
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  8. #8
    Contao-Nutzer
    Registriert seit
    17.09.2010.
    Beiträge
    161

    Standard

    Leider wahr... dass "extends" im übertragenen Sinne auf Deutsch "...ist ein..." bedeutet, wird oft vergessen. Auch Contao ist nicht frei von solchen Schnitzern. So finde ich z.B. BackendModule sollte nicht von Backend abgeleitet werden, denn ein BackendModule ist ja nicht ein Backend.

    Schöner würde ich es finden, wenn man in den Modulen nicht über (das geerbte) $this sondern z.B. über ein import('Backend') und dann über Backend->...() auf die Funktionen zugreifen würde. Wenn man sich die Backend-Klasse ansieht, dann wird dort auch nicht auf später in den Modulen geerbten Elementvariablen (Polymorphie) zugegriffen. Im Gegenteil vermute ich sogar (aber da kann ich mich irren...), dass man alle Elementfunktionen, die nicht statisch sind, auch zu static umbauen könnte und eine Vererbung dann überhaupt keinen Sinn mehr machen würde.

    Aber das ist alles sehr philosophisch - und wo ich mit meinen globalen Hilfsfunktionen hin kann, weiß ich immer noch nicht...

  9. #9
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    So wie wir statische Methoden verwenden ist es software-architektonisch auch falsch. In Contao ist sehr Vieles "falsch", aber guck dir mal andere Systeme an. Da ist noch viel mehr falsch
    Man ist halt gewachsen und wird weiter wachsen und sich verändern müssen

    Wo deine Helpermethoden hinkommen solltest du aber schon lange wissen. Haben wir dir ja aufgezeigt.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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