PHP bietet nicht nur die Möglichkeit Funktionen direkt auf Ebene des Hauptprogramms zu definieren. Innerhalb einer Funktion oder Klasse kann der Entwickler munter weitere Funktionen oder auch Klassen definieren. Dabei gilt des folgendes zu Bedenken: Werden auf diesem Wege – innerhalb einer Klasse oder Funktion – Funktionen oder Klassen definiert, so sind diese erst aufrufbar bzw. nutzbar, wenn die Funktion, in der sie definiert werden, bereits mindestens einmal aufgerufen wurde. Was allerdings nicht möglich ist: Einmal definiert kann eine Funktion weder unter gleichem Namen neu definiert noch nachträglich wieder gelöscht werden.
<?php // Funktion zur Demonstration von verschachtelten Funktionen function parent () { // Definition der Funktion child innerhalb von parent // Sie wird noch nicht aufgerufen! Es erfolgt lediglich // die Definition! Nachdem die Funktion aufgerufen wurde // ist die Funktion child von allen Stellen des Scripts // aus aufrufbar. function child () { echo 'Child Aufgerufen!<br>'; } // Und nun die eigentliche Arbeit von Parent machen... echo 'Parent aufgerufen!<br>'; } // Gibt es child schon? // Hierdurch vermeiden wir, dass eine Funktion aufgerufen wird, // die es noch nicht gibt. Wer sich den unvermeidlichen Fehler // einfagen möchte, entfernt diesen Block einfach und ersetzt ihn // durch einen unbedingten Aufruf von child.. if (function_exists ('child')) // Dann rufen wir die Funktion direkt mal auf child (); else // Ansonsten geben wir das Fehlen zu Protokoll echo 'Child existiert noch nicht!<br>'; // Jetzt wird parent aufgerufen... parent (); // und nun ist auch child bekannt und kann aufgerufen werden. child (); ?>
Child existiert noch nicht!
Parent aufgerufen!
Child Aufgerufen!
Unter Conditional Functions versteht man Funktionen, die nur unter bestimmten Umständen definiert werden. In der Praxis bedeutet dies, dass der Code-Block mit der Funktionsdefinition innerhalb eines If-Statements steht. Die Funktion wird also nur dann definiert, wenn bestimmte (in der If-Anweisung formulierten) Rahmenbedingungen gegeben sind. Ebenso, wie bei verschachtelten Funktionen gilt für Conditional Functions: Kein Aufruf, bevor der Code mit der Funktionsdefinition ausgeführt wurde. Da man sich nicht darauf verlassen kann, dass eine Conditional Function definiert wurde, sollte deren Aufruf nur mit vorangehender Existenzabfrage erfolgen. Conditional Functions werden oft verwendet, wenn ein Script Funktionen benötigt, die aus Bibliotheken stammen, bei denen man sich nicht darauf verlassen kann, ob sie auf dem Webserver installiert sind. Fehlt die Funktion, so wird eine eigene implementiert, die dann einspringt – hierdurch erspart man sich gerne mal die Installation einer Bibliothek und die damit verbundene Anpassung einer PHP-Standardkonfiguration. Ist die Funktion bereits definiert – die nötige Bibliothek also installiert –, so greift das Script auf diese zurück. Nachfolgend der Code einer je nach Konfigurationseinstellung eingebundenen oder nicht eingebundenen Bibliotheksdatei, worauf ein Script folgt, welches ggf. die fehlende Funktionen implementiert. Die Ausgabe des Scripts gibt dann Aufschluss darüber, welche Version der Funktion tatsächlich verwendet wird.
<?php // Auszug aus einer genutzten Bibliothek, die Standardmäßig eingebunden // wird - oder eben nicht... // Je nach Konfiguration des Webservers (bzw. von PHP) wird der Code // aus dieser Datei eingebunden. : : function f_aus_bibliothek () { return 'Ich stamme aus der Bibliothek!'; } : : ?>
<?php // Inhalt des Scripts, welches die von f_aus_bibliothek zur Verfügung // gestellte Funktionalität nutzen möchte // Wurde die Funktion bislang noch nicht definiert? if (!function_exists ('f_aus_bibliothek')) { // Dann sollte das jetzt geschehen function f_aus_bibliothek () { return 'Ich stamme nicht aus der Bibliothek, erfülle aber den selben Zweck!'; } // Erst ab diesem Punkt kann die Funktion aufgerufen werde // (welche Implementation dabei auch immer ausgeführt wird) } // Immer vorher nachschauen, ob die Funktion bereits definiert wurde if (function_exists ('f_aus_bibliothek')) // Aufruf der Funktion $werwars = f_aus_bibliothek (); // Und das Ergebnis ausgeben echo $werwars . '<br>'; ?>
Hallo Zusammen, Am 20./21. Mai findet in Hamburg die erste Developer Conference 2011 statt. Wie der Name bereits verrät, handelt die Konferenz rund ... » mehr
von devcon-hamburg am Dienstag, 12. April 2011 16:50 in PHP - noch nicht beantwortetHallo zusammen, ich habe ein kleines Problem: Ich brauche bei der Entwicklung eines Kontaktformulares für eine Website eine bedingte Weiterleitung ... » mehr
von scatha am Donnerstag, 10. März 2011 01:12 in PHP - noch nicht beantwortetMein vorhaben ist recht simpel aber ich bin php noob (hoffe das entschuldigt es nen bissl xD) und hab kp wie ichs anfangen soll. Und zwar möchte ich ... » mehr
von HeathenMan am Dienstag, 1. Februar 2011 22:57 in PHP - bisher 1 AntwortHallo,
am einfachsten und kompaktesten kann man das mit einem regulären Ausdruck machen. Einfach mal nach der Funktion preg_match_all suchen und den ... » mehr
Hallo, die Bildergalerie mit php und js ist super, jedoch möchte ich gern zu meinen Bildern verschiedene Bemerkungen machen und zwar untereinander, ... » mehr
von Sylma am Mittwoch, 26. Januar 2011 01:13 in PHP - bisher 1 AntwortHallo,
ich nehme an, dass \n im Beschreibungstext nicht funktioniert aber versuchen kann man es. Ansonsten: Schon mal mit einer UTF-Sequenz ... » mehr
Hallo alle miteinander, ich hoffe, dass mit hier jemand helfen kann. Ich habe mir hier von der Seite die Bildergalerie mit JS und PHP ... » mehr
von Saga am Dienstag, 28. Dezember 2010 09:57 in PHP - bisher 6 AntwortenHallo Alex,
die Warnung ist zwar jetzt durch das isset weg, aber die Daten werden immer noch nicht übergeben. (Nachdem ich durch das isset die ... » mehr
¬ Menu
¬ Gratis Download
¬ Tutorials
¬ Seminare
¬ Yoga
¬ Insolvenzrecht
¬ News
15.08.2008Schleifen in PHP: Die While-Schleife » mehr 13.08.2008Nutzung von Variablen unter PHP: Definition, Sichtbarkeit und vordefinierte Variablen » mehr 11.08.2008Ausgabe von Datum und Zeit mit PHP nach Konvertierung in ein String » mehr Eine vollständige News-Liste ist auf der News-Seite zugänglich.
¬ Foren
¬ Buchtipp

Einstieg in PHP 5.1 & MySQL 5, m. CD-ROM
Weitere PHP Bücher finden Sie unter PHP Literatur