Klasse in include-Datei instanzieren

  • Hallo,

    ich habe eine XML-Datei aus der Sprachelemente für eine Website geladen werden.
    Nun gibt es eine Datei die eingebunden werden soll über include/require. Dort wird die Klasse für das Auslesen der XML Datei ebenfalls benötigt.
    Wenn ich nun in der einzubindenden Datei die Klasse instanziere (in der "Hauptdatei" ist sie schon instanziert), dann bekomme ich die Fehlermeldung, dass die Klasse nicht redeclared werden kann. Tue ich das aber nicht, dann kommt die Fehlermeldung "Call to a member function GetItem() on a non-object", das Objekt existiert also dann anscheinend nicht.

    Wie kann ich das Problem lösen?

    Viele Grüße

    Mir nicht

  • Naja OK, wenn du denkst, dass es was bringt:

    Für die Datei in die included wird:

    Code
    include("inc/global.inc.php");
    include("inc/i18n.php");
    
    
    $saxParser = new SaxParser();
    $saxParser->parse( $_SESSION['country_code'], "inc/dtnet_lang.xml" );

    Für die Datei die included wird (global.inc.php):

    Code
    include("i18n.php");
    
    
    $saxParser = new SaxParser();
    $saxParser->parse( $_SESSION['country_code'], "inc/dtnet_lang.xml" );

    Wie du sehen kannst, liegt sowohl die Datei global.inc.php, als auch die I18N.php im Ordner /inc/

    Ich weiß ja, dass eine Datei nur einmal included werden kann, aber es funktioniert so oder so nicht.

    Viele Grüße

    Mir nicht

  • Das ist ja nicht alles was ich in der global.inc mache.
    Nur handelt es sich dabei um Dateien aus meiner Firma und da kann ich leider nicht mehr posten. Aber ich denke das war das was du gemeint hat. Mehr musst du doch eigentlich nicht wissen oder?

    Viele Grüße

    Mir nicht

  • Du musst in der index.php oder whatever das:

    include("inc/i18n.php");

    $saxParser = new SaxParser();
    $saxParser->parse( $_SESSION['country_code'], "inc/dtnet_lang.xml" );

    rausnehmen, denn du deklarierst ja doppelt und wenn du $saxParser in der zwischenzeit nicht verändert hast, bzw, wenn du das ganze neu haben musst, dann nimm eine neue Variable

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • @ K.Y.L.T.
    OK danke erstmal für den Tipp.
    Das hatte ich glaube ich schon mal probiert.
    Wäre ja auch irgendwie logisch, nur leider kommt immer noch in der global.inc die Fehlermeldung Call to a member function GetItem() on a non-object

    @Rover
    Ja aber das ist doch bei der variablen eigentlich egal. Außerdem funktioniert es ja nur eben in der global.inc nicht.

    Viele Grüße

    Mir nicht

  • Zitat von K.Y.L.T.

    du weißt schon, dass
    du in der Datei genau das gleiche machst, wie in global.inc.php , also warum das ganze?


    Zitat von K.Y.L.T.

    denn du deklarierst ja doppelt

    I' ve mentioned it .

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Wie oben schon erwähnt, funktioniert das nicht. Weder wenn ich es nur in der i18n.php mache noch wenn ich es nur in der anderen mache.
    Fragt mich aber bitte nicht warum.
    Ich hab keine Ahnung. Wenn euch noch was einfiele wäre ich ehrlich dankbar.

    Viele Grüße

    Mir nicht

  • wenn ich dich richtig verstehe, dann musst du einfach nur

    include_once("inc/global.inc.php");
    verwenden, dann dürfte der Fehler nicht kommen, es sei denn es gibt einen weiteren Deklarationsfehler in inc/global.inc.php , im Zweifel error_reporting(E_ALL);

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Ja OK. Der Fehler mit dem Redeclare kommt schon man nicht mehr.
    Danke dafür

    Jetzt spuckt er mir aber immer noch den Fehler Call to a member function GetItem() on a non-object aus.
    Kann doch eigentlich nicht sein oder?
    Warum erkennt er denn das nicht als Objekt?

    Viele Grüße

    Mir nicht

  • Da steht aber ne Zeile bei, zumindest bei meinem php-Fehlern, aber so können wir dir nicht helfen, ohne Code geht das hier nicht mehr. Schau alle Variablen durch, ob sie deklariert sind oder frag einfach deinen Chef .

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ