Mario: cannot redeclare...

Hallo,

ich habe eine PHP-lib, welche in mein Projekt eingebunden wird. Sowohl die lib als auch mein Projekt nutzen log4php.

Auf php4 ist das glaube ich kein Problem, auf php5 gibt es aber eine Fehlermeldung: "cannot redeclare" (function / class).

Gibt es einen Weg, dieses Problem zu beseitigen? Danke!

  1. Hallo Mario.

    ich habe eine PHP-lib, welche in mein Projekt eingebunden wird. Sowohl die lib als auch mein Projekt nutzen log4php.

    Auf php4 ist das glaube ich kein Problem, auf php5 gibt es aber eine Fehlermeldung: "cannot redeclare" (function / class).

    Gibt es einen Weg, dieses Problem zu beseitigen? Danke!

    Sowohl unter PHP4 als auch PHP5 steht dir include_once zur Verfügung.

    Einen schönen Freitag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
    1. Hallo Mario.

      Sowohl unter PHP4 als auch PHP5 steht dir include_once zur Verfügung.

      Einen schönen Freitag noch.

      Hallo, danke,
      ich habe eigentlich schon alle includes geprüft. Man muß vielleicht dazu sagen, dass der Logger sich dann in diesem Fall wirklich zweimal im Projekt befindet. Kann dies der Grund sein, dass include_once nicht funktioniert?

      1. Hallo Mario.

        Sowohl unter PHP4 als auch PHP5 steht dir include_once zur Verfügung.

        ich habe eigentlich schon alle includes geprüft. Man muß vielleicht dazu sagen, dass der Logger sich dann in diesem Fall wirklich zweimal im Projekt befindet.

        Ja, das besagt die genannte Fehlermeldung ja; die Klasse wird aus Sicht des Interpreters doppelt deklariert.

        Kann dies der Grund sein, dass include_once nicht funktioniert?

        Kann *was* der Grund sein? Include_once funktioniert an sich immer, mir fällt es gerade schwer, mir eine Situation vorzustellen, in der das nicht der Fall ist.

        Was also passiert nun, wenn du beide „include“-Aufrufe durch „include_once“-Aufrufe ersetzt?

        Einen schönen Freitag noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
        1. ich habe eigentlich schon alle includes geprüft.

          Ok, war nicht deutlich genug. Wenn ich mich nicht verguckt hab, sind wirklich alle inludes mit "_once" angegeben. Ich hoffe ich habe mich da nicht getäuscht (ich habe nach allen includes und requires gesucht). Es gibt noch wie gesagt aber ein Thema:

          Man muß vielleicht dazu sagen, dass der Logger sich dann in diesem Fall wirklich zweimal im Projekt befindet.

          Einmal befindet sich der logger in 'project/lib/logger' und dann noch in 'project/logger'. Mit include_once wird jede Datei nur einmal eingebunden. Der Logger besteht aber physikalisch zwei mal. LoggerManager.php ist in zwei verschiedenen Verzeichnissen vorhanden. Daher denke ich, dass include_once vielleicht dann doch nicht weiterhilft?

          Ich muss dazusagen, dass ich derzeit die Möglichkeit habe mit php4 zu arbeiten. Jedoch wäre es nett zu wissen, ob es für php5 auch funktioniert, ob jemand mal das selbe Problem hatte.

          Dankeschön ;)

          1. Ich grüsse den Cosmos,

            LoggerManager.php ist in zwei verschiedenen Verzeichnissen vorhanden. Daher denke ich, dass include_once vielleicht dann doch nicht weiterhilft?

            könnte das Problem sein, da es sich um zwei verschiedene Dateien ha
            ndelt, die vielleicht den glechen Inhalt haben.

            Ich muss dazusagen, dass ich derzeit die Möglichkeit habe mit php4 zu arbeiten. Jedoch wäre es nett zu wissen, ob es für php5 auch funktioniert, ob jemand mal das selbe Problem hatte.

            Ich vermute eher, das eine Funktion oder Klasse in PHP5 existiert, die den gleichen Namen hat, wie in der log4php

            Da du aber keine komplette Fehlermeldung postest, ist das alles ein ratespiel. Im Normalfall wird angezeigt, welche Funktion/Klasse betroffen ist.

            Möge das "Self" mit euch sein

            --
            Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
            ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)