Hallo
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
Wie die Fehlermeldung schon sagt, deklarierst du die Funktion ein zweites Mal (innerhalb von connectFerneDB()), was der PHP-Parser nicht erlaubt.
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: 1Abbruch und keine Fehlermeldung.
Aus dem PHP-Handbuch zu include (Hervorhebungen von mir):
„Wenn in der eingebundenen Datei Funktionen definiert werden, können sie in der einbindenden Datei genutzt werden, unabhängig davon, ob sie vor oder nach return definiert werden. Wenn eine Datei zweimal eingebunden wird, erzeugt PHP 5 einen fatalen Fehler, weil Funktionen bereits definiert wurden, während PHP 4 Funktionen, die nach return definiert werden, ignoriert.“
Frage: Welche PHP-Version läuft bei dir?
Tschö, Auge
Wir hören immer wieder, dass Regierungscomputer gehackt wurden. Ich denke, man sollte die Sicherheit seiner Daten nicht Regierungen anvertrauen.
Jan Koum, Mitgründer von WhatsApp, im Heise.de-Interview