Linuchs: php-functions in einer function?

Beitrag lesen

Moin

Natürlich "hakt" es, wenn ich zur bereits include( "db_connect.php" ) noch eine include( "db_connect2.php" ) mit denselben Funktionen hinzufüge. An der Stelle bricht das PHP-Programm ohne Fehlermeldung ab.

Das glaube ich nicht, dass da keine Meldung produziert wird. Du wirst sie nur nicht angezeigt bekommen.

Mit dem System arbeite ich seit Jahren. Habe extra noch mal getestet und eine unbekannte Datei includieren wollen. Da kommt Mecker.

Zum eigentlichen Problem: Funktionen sind generell global und ihr Name einmalig. Man kann sie zwar geschachtelt definieren, aber dann darf man die äußere Funktion nur ein einziges Mal aufrufen, weil bei diesem Aufruf die "innere" Funktion erstellt wird und beim nächsten Aufruf bereits vorhanden ist.

Naja, testen wir mal:

function sagWas() {
  echo "<p>Ich zähle: 1</p>";
}
sagWas();

function connectFerneDB() {
  function sagWas() {
    echo "<p>Ich zähle: 2</p>";
  }
  sagWas();
}
connectFerneDB();

Prompt kommt Mecker:

Ich zähle: 1
Fatal error: Cannot redeclare sagWas() (previously declared in .../p091.php:20) in .../p091.php on line 25 

Jetzt packe ich den Fünfzeiler

<?
function sagWas() {
  echo "<p>Ich zähle: 1</p>";
}
?>

in die Datei mist_sagWas.php und mache

// Variante 2:
include( "mist_sagWas.php" );
sagWas();

function connectFerneDB() {
  include( "mist_sagWas.php" );
  sagWas();
}
connectFerneDB();

echo "<p>Ich höre auf zu zählen</p>";

Antwort:

Ich zähle: 1

Abbruch und keine Fehlermeldung.

Linuchs