Announcement

Collapse
No announcement yet.

Redeclare PEAR???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Redeclare PEAR???

    Hallo zusammen,

    ich habe wiedermal ein für mich unverständliches Problem mit PHP.Ich habe ein Projekt
    erstellt, in das ich die von mir benötigten Pear-Klassen, sowie die Pear.php manuell per
    "require_once" includiere. Nun habe ich eine Klasse erstellt, die die Attribut
    "m_Connection, m_strDSN und m_aOptions" und eine Methode "connect()" besitzt, diese sieht
    folgendermaßen aus:
    <br><br>
    function connect()
    {
    $this->m_Connection =& DB::connect($this->m_strDSN, $this->m_aOptions);
    if (DB::isError($this->m_Connection))
    return false;
    else
    return true;
    }
    <br><br>
    Von dieser Klasse mit der Connect()-Methode habe ich nun eine Klasse vererbt. Nun rufe ich
    von der vererbten Klasse diese Connect()-Methode auf und erhalte folgende Fehlermeldung.
    <br><br>
    Information: PEAR.php Zeile 24 - Constant PEAR_ERROR_RETURN already defined
    Information: PEAR.php Zeile 25 - Constant PEAR_ERROR_PRINT already defined
    Information: PEAR.php Zeile 26 - Constant PEAR_ERROR_TRIGGER already defined
    Information: PEAR.php Zeile 27 - Constant PEAR_ERROR_DIE already defined
    Information: PEAR.php Zeile 28 - Constant PEAR_ERROR_CALLBACK already defined
    Information: PEAR.php Zeile 33 - Constant PEAR_ERROR_EXCEPTION already defined
    Information: PEAR.php Zeile 35 - Constant PEAR_ZE2 already defined
    Information: PEAR.php Zeile 38 - Constant OS_WINDOWS already defined
    Information: PEAR.php Zeile 39 - Constant OS_UNIX already defined
    Information: PEAR.php Zeile 40 - Constant PEAR_OS already defined
    Debug-Fehler: PEAR.php Zeile 86 - Cannot redeclare class pear
    <br><br>
    1. Frage: Hängt das mit meiner Includierung die PHP-Dateien zusammen?
    2. Frage: Benötigt eine Klasse zwingend ein Konstruktor? Ich möchte innerhalb dieser
    Klasse nur Eigenschaften generalisieren und benutze sie quasi nur als Vorlage zum vererben?
    Danke für Eure Hilfe!
    MfG
    Robert

  • #2
    2: nein
    1: vor der klassen deklaration von pear (in der include)
    prüfen ob es die klasse schon gibt, wenn nicht machen sonst nix...

    hatte ein ähnliches problem mit einer funktion die ich 'included' ha

    Comment


    • #3
      Hallo,

      u.U. hilft schon das Einbinden nicht mit include(), sondern mit include_once()!

      Gruß Fal
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Also der Fehler tritt exakt an folgender stelle im PEAR-Package "DB" auf:
        <br><br>
        if (isset($options['debug']) && $options['debug'] >= 2) {
        // expose php errors with sufficient debug level
        include_once "DB/${type}.php";
        } else {
        @include_once "DB/${type}.php";
        }
        <br><br>
        Ich nehme an es liegt wohl daran, dass in der includierten PHP-Datei nocheinmal die PEAR-PHP includiert wird. Aber sollte das nicht eigentlich mit "include_once" verhindert werden? Wie kann ich den Fehler umgehen? Und wo ist der Unterschied zwischen "require_once" und "include_once".
        <br><br>
        Danke für Eure Hilfe!
        MfG
        Rober

        Comment


        • #5
          um den PEAR-PHP include ein 'schon da prüf' if würd ich sagen..

          require macht ein fatal error
          und include ein warning
          falls die datei nicht da ist oder ähnliches..
          http://www.php.net

          Comment

          Working...
          X