Ergebnis 1 bis 5 von 5

Thema: Namespaces in external library

  1. #1
    Contao-Nutzer Avatar von Sawyer
    Registriert seit
    19.06.2009.
    Beiträge
    127

    Standard Namespaces in external library

    Hi,

    ich schreibe gerade eine Erweiterung in der ich auf eine library zum validieren von json Dateien angewiesen bin. Diese library nutzt zum Glück auch schon namespaces, daher alles relativ einfach zu implementieren.

    Ich habe die library unter "extension_name/vendor/JsonSchema" gespeichert und die Erweiterung nutzt den namespace JsonSchema. Nun zum problem, wenn ich den namespace mit dem autoloader.php lade entsteht eine Klasse /JsonSchema/Validator die wiederum die Contao Klasse Validator überschreibt was so nicht gedacht ist!!!

    Mache ich irgendwas falsch?

    Ich denke ich könnte den Namespace von JsonSchema erweitern aber das sind relativ viele Dateien und schön ist das nicht meiner Meinung nach. Sollte ich auf den Namespace verzichten? Was habt für eine Ideen?

    Chris

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

    Standard

    Würde es helfen wenn der autoloader die nicht findet und du dich selbst drum kümmerst?

    Die "neue" autoload.ini gibt sowas her:
    Code:
    ;;
    ; List modules which are required to be loaded beforehand
    ;;
    requires[] = "core"
    
    ;;
    ; Configure what you want the autoload creator to register
    ;;
    register_namespaces = true
    register_classes    = true
    register_templates  = true
    
    ;;
    ; Override the default configuration for certain sub directories
    ;;
    [vendor/*]
    register_namespaces = false
    register_classes    = false
    register_templates  = false
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer Avatar von Sawyer
    Registriert seit
    19.06.2009.
    Beiträge
    127

    Standard

    In der tat ist das die bessere option und habe es auch so gelöst, danke für den Tipp.

  4. #4
    Contao-Nutzer Avatar von Sawyer
    Registriert seit
    19.06.2009.
    Beiträge
    127

    Standard

    Ich muss noch einmal hierzu zurueck kommen, ich stehe irgendwie noch etwas auf dem schlauch mit den namespaces und anderen Klassen. Es ist jetzt ein anderen beispiel: Ich bin im eigenen namespace und lade eine library ohne namespaces (also auch nicht in der autoload eingetragen) per:

    Code:
    include(TL_ROOT.'/plugins/jpgraph/jpgraph.php');
    include(TL_ROOT.'/plugins/jpgraph/jpgraph_bar.php');
    Diese library enthälten nun eine Klasse Image welche die Contao\Image überschreibt? Ich verstehe nicht genau wie ich dies vermeiden könnte? Kann mir jemand helfen lichts ins dunkel zu bringen?

    Danke
    Chris

  5. #5
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard

    Contao schneidet den ersten Teil des Namespace ab, so dass \Contao\XYZ und \jsonSchema\XYZ beide als \XYZ bekannt sind und eins das andere überschreibt. Du kannst aber einfach eine zusätzliche Ebene einfügen, z.B.: \ERWEITERUNG\jsonSchema\XYZ. Dann wäre die neue Klasse über \jsonSchema\XYZ erreichbar. Natürlich solltest Du ERWEITERUNG und XYZ durch die entsprechenden Namen ersetzen.

    Viele Grüße,
    es_IT

    Gesendet von meinem Nexus 7 mit Tapatalk
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

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
  •