Ergebnis 1 bis 17 von 17

Thema: Datenbank und Log in neuer Klasse

  1. #1
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard Datenbank und Log in neuer Klasse

    Hi,
    wenn ich in einem Inhaltselement oder Modul eine eigene kleine Klasse einsetze, wie kann ich aus dieser Klasse heraus die Datenbank oder Log-Funktion ansprechen? Mit $this->... gehts ja logischerweise nicht mehr!

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

    Standard

    Musst sie dir holen
    PHP-Code:
    $this->import('Database'); 
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Musst sie dir holen
    PHP-Code:
    $this->import('Database'); 
    Schön wäre es. Aber bei mir kommt bei der Zeile nur der Fehler:

    Fatal error: Call to undefined method Paypal::import() in /www/htdocs/

    Paypal heißt meine neue Klasse!

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

    Standard

    Ah du bist komplett ausserhalb

    Äh, nicht sonderlich schlau...du bist ausserhalb des Systems. Ich würde halt von Backend erben lassen
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Ah du bist komplett ausserhalb

    Äh, nicht sonderlich schlau...du bist ausserhalb des Systems. Ich würde halt von Backend erben lassen
    Nu die Klasse hat ansonsten eigentlich nix mit Typollight zu tun, daher dachte ich mir kann ich mir das vererben sparen. Ich hasse dieses Klassengemehre ;-)
    Von welcher Klasse empfielst du zu erben, wie heißt die genau?

  6. #6
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Ich würde halt von Backend erben lassen
    System genügt auch.
    1+1=10

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

    Standard

    Ist eine Frage von "was willst du nutzen?"
    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 Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Ist eine Frage von "was willst du nutzen?"
    Wenn ich richtig gelesen habe, dann Database und Log
    1+1=10

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

    Standard

    Ja, kommt ja vielleicht noch mehr dazu Aber hast schon Recht, wenn man's genau nehmen will, dann System
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  10. #10
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Der Tipp mit System ist gut. Nur eines fehlt noch, ich muss auch auf die Klasse Environment zugreifen, das scheint mit System nicht zu gehen. Oder kann ich das auch importieren
    mit $this->import(Environment); ?

  11. #11
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi

    laut api.https://contao.org wird Environment schon im Konstruktor im importiert und ist dann unter $this->Environment verfügbar.

    Gruß b2m
    1+1=10

  12. #12
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Zitat Zitat von b2m Beitrag anzeigen
    Hi

    laut api.https://contao.org wird Environment schon im Konstruktor im importiert und ist dann unter $this->Environment verfügbar.

    Gruß b2m

    Also bei mir funktioniert es nur wenn ich es zusätzlich mit Import übernehme, habs ausprobiert. Ist die API Doku falsch oder muss ich den Construktur von Systems manuell noch aufrufen? Hier Codeauszug:

    Code:
    class Paypal extends System 
    {
    public function __construct()
    {
        $this->import('Environment');
        $this->import('Database');
    
        ...	
    }

  13. #13
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi

    versuche es doch mal mit einem
    PHP-Code:
    parent::__construct(); 
    in deiner __construct().

    Gruß b2m
    1+1=10

  14. #14
    Contao-Nutzer Avatar von Seitengestalter
    Registriert seit
    30.12.2009.
    Ort
    Geretsried
    Beiträge
    79

    Standard

    Geht's nicht so?

    Code:
    $objEnv = $this->Environment->getInstance();
    dann hast du Zugriff:
    Code:
    string __get (string $strKey) // $Key abfragen
    und
    Code:
    void __set (string $strKey, mixed $varValue) // $Key eintragen
    also z.B.
    Code:
    echo $objEnv->__get('url'); //Rückgabe der aktuellen URL ohne Pfad und Querystring
    Geändert von Seitengestalter (31.01.2010 um 06:53 Uhr)
    Wenn Null besonders groß ist, ist es fast so groß wie ein bisschen Eins.

  15. #15
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Guten Morgen Seitengestalter,

    theoretisch geht es auch so, wie du es beschrieben hast. Aber was wenn Leo jetzt beschließen sollte ein anderes Design Pattern zu verwenden, das Singleton für Environment ersetzt oder eine __construct() mit Parametern für Environment definiert?

    Dann funktioniert dein Code plötzlich nicht mehr , wohingegen die Lösung mit parent::__construct() (ist glaube ich eine Form des Fabric Patterns) bzw. $this->import('Environment'); auch weiterhin funktionieren wird, da in diesen Fällen das Typolight-Framework für eine korrekte Initialisierung des Objektes sorgt.

    Gruß b2m
    1+1=10

  16. #16
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard

    Moin alle,

    also __set() und __get() sind NICHT dafür vorgesehen, direkt aufgerufen zu werden! Es sind magische Methoden, die von PHP aufgerufen werden, wenn eine unbekannte Member-Variable zugegriffen wird. Siehez.B. hier.
    PHP-Code:
    // Falsch:
    echo $object->__get('abc');
    $object->__set('xyz'$some_value);
    // Richtig:
    echo $object->abc;
    $object->xyz $some_value
    Natürlich nur, wenn die Methoden __set/__get 'abc' bzw. 'xyz' auch behandeln.

    Die eigene Definition eines Konstruktors a la
    PHP-Code:
        public __construct()
        {
            
    parent::__construct();
        } 
    ist, wenn ich richtig informiert bin, für einige älter PHP 5 Versionen nötig, weil in denen der Konstruktor der Superklasse nicht automatisch aufgerufen wurde, wenn man keinen Konstruktor definiert hatte; ein Bug in diesen Versionen, ich glaube, der wurde in 5.3 gefixt. Jedenfalls erforderlich ist der Aufruf von parent::__construct(), wenn man einen eigenen Konstruktor definiert hat, egal, ob er noch andere Initialisierungen vornimmt, oder nicht.

    LG, Georg
    Geändert von deerwood (01.02.2010 um 00:27 Uhr)

  17. #17
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi Georg,

    danke für deine sinnvollen Ergänzungen. Das mit den Gettern und Settern habe ich ganz übersehen

    Gruß b2m
    1+1=10

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Auf Datenbank in eigener Klasse zugreifen
    Von typo im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 22.06.2010, 20:36
  2. Neuer Artikel erzeugen
    Von thosie im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 07.06.2010, 12:31
  3. neuer Elementtyp
    Von samoth im Forum dma_elementgenerator
    Antworten: 2
    Letzter Beitrag: 12.04.2010, 10:31
  4. Mailbenachrichtigung bei neuer Registrierung
    Von beduw im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 01.04.2010, 15:18
  5. Anmeldung neuer User
    Von Whitedragon im Forum Geschützte Bereiche/Mitglieder
    Antworten: 2
    Letzter Beitrag: 02.08.2009, 12:29

Lesezeichen

Lesezeichen

Berechtigungen

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