Hans Gustav: redeclare

hi,

die include datei i_dropmenu.php meldet einen nicht übersetzbaren* fehler:

Fatal error: Cannot redeclare dropmenu() in /usr/.../i_dropmenu.php on line 2

* redeclare steht weder im internet noch in büchern.

Hans Gustav

P.S.: Der Server des Archivs ist ausgelastet.

  1. Hallo,

    die include datei i_dropmenu.php meldet einen nicht übersetzbaren* fehler:

    Fatal error: Cannot redeclare dropmenu() in /usr/.../i_dropmenu.php on line 2

    * redeclare steht weder im internet noch in büchern.

    Das bedeutet, dass die Funktion dropmenu() zweimal vorkommt (dass Du sie erneut "deklarierst").
    Wahrscheinlich einmal im "eigentlichen" Skript und einmal im Code-Schnipsel,
    den Du mit include() einbindest.

    Eine Funktion darf nur einmal vorkommen.
    Wenn es zwei verschiedene Funktionen sind, benenne die eine um.
    Sonst musst Du sie im Include oder in eigentlichen Skript loeschen, bzw. eine schlauere Struktur der Includes ausdenken.

    HTH, mfg
    Thomas

  2. Hi,

    die include datei i_dropmenu.php meldet einen nicht übersetzbaren* fehler:

    glaub ich nicht
    declare: deklarieren
    redeclare: wieder deklarieren

    Fatal error: Cannot redeclare dropmenu() in /usr/.../i_dropmenu.php on line 2

    das bedeutet, dass es die Funktion dropmenu() schon gibt
    dies umgeht man mit sauberer Programmierweise oder mit
    include_once() bzw. require_once()

    * redeclare steht weder im internet noch in büchern.

    auch das glaube ich nicht
    http://www.google.de/search?q=redeclare&ie=UTF-8&oe=UTF-8&hl=de&btnG=Google+Suche&meta=

    ciao
    romy

    1. Hallo Romi,

      das bedeutet, dass es die Funktion dropmenu() schon gibt

      das kann ich glauben

      dies umgeht man mit sauberer Programmierweise oder mit

      das ist ja langweilig

      include_once() bzw. require_once()

      das glaube ich nicht!

      include_once() bzw. require_once() achtet nicht auf den Inhalt der zu includierenden Dateien, sondern nur darauf, ob die Datei selber bereits included wurde.

      Eine doppelte Funktionseinbindung kann man eigentlich nur auf zwei (drei) Arten vermeiden: den Funktionsnamen einen Präfix der jeweiligen "LIB" verpassen, der sich eindeutig unterscheidet,

      OOP von PHP benutzen. Dafür ist es nämlich ganz brauchbar

      Bedingte Funktionsdeklarationen benutzen:

      if (!function_exists("blah"))
      {
        function blah()
        {

      return "blahblah";
        }
      }

      Das funktioniert bestens, führt aber wieder zu ganz witzigen Nebenerscheinungen *ggg*

      Zum Schluss noch neugierig gefragt: Kennt jemand eine Methode, mit der man Funktionen wieder dedeklarieren kann?

      Grüße

      Chris (C)

      1. Hi,»» Hallo Romi,
        bitte bitte schreib mich mit "y"

        include_once() bzw. require_once()
        das glaube ich nicht!

        Du hast Recht, habe mich im Eifer des Gefechtes versehen ;)

        Eine doppelte Funktionseinbindung kann man eigentlich nur auf zwei (drei) Arten vermeiden: den Funktionsnamen einen Präfix der jeweiligen "LIB" verpassen, der sich eindeutig unterscheidet,

        ACK

        bzw. ganz umständlich, bei jeder Funktion vorher prüfen ob sie schon existiert

        Zum Schluss noch neugierig gefragt: Kennt jemand eine Methode, mit der man Funktionen wieder dedeklarieren kann?

        mal ganz umständlich:
        Du hast jede Funktion in einer eigenen Include-Datei, je nach Zustand bindest Du diese ein oder nicht 8ein erneutes Abrufen vom Server vorrausgesetzt)
        Ansonsten: Nein!

        ciao
        romy

        1. Hallo Romi^Hy,  ***ggg tschuldigung***

          Zum Schluss noch neugierig gefragt: Kennt jemand eine Methode, mit der man Funktionen wieder dedeklarieren kann?
          mal ganz umständlich:
          Du hast jede Funktion in einer eigenen Include-Datei, je nach Zustand bindest Du diese ein oder nicht 8ein erneutes Abrufen vom Server vorrausgesetzt)

          Das wird dann aber wohl den Server killen. Ich habe schon richtig Angst vor dem Einsetzen des Besucherstromes. Ich habe ein paar Libs dabei, die inzwischen weit über 100k groß sind. Da wäre feinere Aufteilung sicher nicht schlecht. Oder man muss sich doch ein Linkkonzept bauen, bei dem nur die Funktionen aus einer solchen Riesen-Sammlung tatsächlich in die Scripte reingenommen werden, die man darin benötigt.

          Und dann gibts Arbeitsscript, dass nach Änderungen von Funktionen mal eben alle Aktualisierungen in allen Scripten betreibt.

          Grüße

          Chris (C)