PHP Function

Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 
Script Seite

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog Verzeichnis

Partner
Sprüche Treff

pixelx.de
Bei diesen Anbieter bekommt man verschiedene Webho...
http://www.pixelx.de
speicherzentrum.d...
Bei den Anbieter bekommt man Webspace, Domains und...
http://www.speicherzentrum.de
 
 

Php Function

Sie befinden sich: Home > Php > Php Function

PHP-Entwickler gibt es wie Sand am Meer – doch die wenigsten benutzen bei der Erstellung ihrer Web-Anwendungen Funktionen. Dabei sind diese perfekt dazu geeignet, Wiederholungen im Quelltext zu vermeiden, und dabei natürlich auch Fehlerquellen zu umgehen. Nicht zu vergessen natürlich die Zeitersparnis, die bei der Verwendung von anwendungsspezifischen Funktionen auftritt. Denn im Grunde ist PHP ja eine objektorientierte Skriptsprache, die an die Programmiersprache C angelehnt ist. Man muss sie nur entsprechend benutzen.

In diesem Artikel behandeln wir also die Verwendung von Funktionen. Einer der großen Vorteile an PHP ist die riesige Bibliothek an schon vorhandenen Funktionen, die inzwischen sogar schon kritisiert wird, weil sie so schnell und unkontrolliert gewachsen ist. Nichts desto Trotz haben diese Funktionen einen entscheidenden Vorteil: Sie tun meist das, was sie sollen, ohne einen Aufwand zu verursachen.

Ein gutes Beispiel für die Verwendungsmöglichkeit von PHP-Funktionen ist die so genannte Date-Function. Das Datum wird im Webserver-Bereich und in Datenbanken häufig als Unixtime-Timestamp abgelegt. Bei der Unixtime werden ganz einfach die Sekunden seit dem 1. Januar 1970, 0:00 Uhr (UTC) hochgezählt. Das hat den Vorteil, dass man immer die genaue Uhrzeit, unabhängig von der Zeitzone und ähnlichen Lasten bestimmen kann. So ein typischer Unixtime-Timestamp (zum Beispiel 1249021953) hat den Nachteil, dass er für Menschen sehr schlecht lesbar ist. Ist es jetzt gewünscht, einen solchen Timestamp für Menschen gut leserlich in einer PHP-Anwendung auszugeben, hat man zwei Möglichkeiten.

Entweder man programmiert selbst einen entsprechenden Algorithmus, der die Unixtime in Normalzeit umrechnet, oder man verwendet einfach die schon vorhandene Date-Function. Alles was zu tun ist, ist der Funktion den Unixtime-Timestamp und das gewünschte Ausgabeformat zu übergeben, das sehr frei gestaltet werden kann.

Code-Beispiel:

<?php
echo date("d.m.Y", 1249021953);
?>

Erklärung:

echo: Ist hier nur zur Veranschaulichung, um eine Ausgabe zu erzielen. Genau so kann das Ergebnis der Funktion auch in eine Variable gespeichert werden.
date: Ist der Name der aufgerufenen Funktion. In diesem Fall eben die Datumsfunktion.
d.m.Y: Spezifiziert das Format, in dem die Uhrzeit ausgegeben werden soll. In diesem Fall wäre das DD.MM.JJJJ. Genau so könnte man aber auch beliebige andere Ausgabeformate wie eine vierstellige Jahreszahl oder ausgeschriebenen Monatsnamen wählen. Die Möglichkeiten sind fast grenzenlos.

Mindestens genau so interessant wie das Verwenden schon bestehender Funktionen ist aber sicherlich die Erstellung eigener, personalisierter kleiner Helferlein, die sich perfekt in das eigene Programmschema anpassen und genau das tun, was sich der Entwickler wünscht. Die Rede ist von der Definition von eigenen Funktionen, das PHP als objektorientierte Sprache natürlich anbietet. Hauptziel ist dabei klar: Es soll vermieden werden, dass ein Entwickler gleiche Elemente im Quelltext immer wieder wiederholt und dabei einerseits die Performance verschlechtert, andererseits aber auch Nährboden für Fehler ausstreut sowie den Wartungsaufwand in die Höhe treibt. Doch wie geht das?

Eine Definition einer Funktion wird wie üblich mit einem Schlüsselwort eingeleitet.

<?php
function
?>

Nach dem Schlüsselwort muss ein Name für die Funktion vergeben werden. Diese Namensvergabe unterliegt zwar nicht ganz so strengen Namenskonventionen wie in anderen Programmiersprachen, sollte aber nicht mit einer Zahl oder einem Sonderzeichen beginnen und nicht nur aus Großbuchstaben bestehen.

<?php
function individuelleFunktion
?>

Von der Syntax her unterscheidet sich die selbst erstellte Funktion also nicht von normalen, schon Out-of-the-Box-Funktionen. Auch hier können Parameter übergeben werden. Dafür folgen dem Funktionsaufruf runde, sich öffnende Klammern. Anschließend übergibt man für gewöhnlich an Stelle der Parameter selbst Variablen, damit die Funktion mehrfach genutzt werden kann. Diese Parameter bzw. Variablen werden per Kommata getrennt. Hier gibt es jedoch eine Ausnahme: Ist bei Funktionsaufruf noch nicht klar, welche bzw. wie viele Parameter übergeben werden sollen, werden die Parameter dynamisch beim Ablauf der Funktion mit den Funktionen func_num_args, func_get_arg und func_get_args geladen. Nach der Parameterliste folgt eine runde schließende Klammer.

<?php
function individuelleFunktion($parameter1, $parameter2)

?>

Jetzt sind wir bereit, die eigentliche Programmlogik zu entwickeln. Schließlich muss die Funktion, um ihren Sinn zu erfüllen, jetzt mit den Variablen arbeiten und etwas erledigen – im einfachsten Fall einen Wert zurückliefern. Der Quelltext innerhalb der Funktion wird von geschweiften Klammern umgeben. Üblich ist, diesen Quelltext ein wenig einzurücken, so dass der Code besser lesbar wird. Immerhin kann es auch einmal passieren, dass mehrere Entwickler an einem Projekt arbeiten und nicht nur eigene Code-Snippets bearbeiten.

<?php
function individuelleFunktion($parameter1, $parameter2) {
//Ab hier beginnt der Code (Kommentar)
}
?>

Kommentare im PHP-Code lassen sich mit zwei Schrägstrichen realisieren. Möchte man eine ganze Passage auskommentieren, ist das mit den Zeichenfolgen „/*“ (Anfang Kommentar) und „*/“ (Ende Kommentar) möglich.

In der Funktion sind die außerhalb definierten Variablen nicht verfügbar. Fachleute nennen den Raum, in dem eine Variable sichtbar ist, „Variable Scope“. Das heißt, dass alle Werte aus der Anwendung, mit denen die Funktion arbeiten soll, per Parameterliste übergeben werden müssen. Einzige Ausnahme bilden hier die globalen Variablen. Variablen können selbst in der Funktion noch als global gekennzeichnet werden, und sind dann auch dort verfügbar. Mit dieser Vorgehensweise sollte man aber sehr sparsam umgehen und wirklich abwägen, ob sie Sinn macht und notwendig ist. Sie ist nämlich auch ein beliebter Fallstrick und führt oftmals zu Fehlern.

<?php
$anzahl
= 23;

function
individuelleFunktion($parameter1, $parameter2) {
echo
$anzahl;
}
?>

Hier würde keine Ausgabe erfolgen, weil die Variable $anzahl nicht innerhalb des Variable Scope verfügbar ist.

Im Vergleich:

<?php
$anzahl
= 23;

function
individuelleFunktion($parameter1, $parameter2) {
global
$anzahl;
echo
$anzahl;
}
?>

Diese Funktion würde den Wert „23“ ausgeben, da die Variable $anzahl zur globalen Variable deklariert wird.

Was man bei der Verwendung von Funktionen und Variablen auch kennen sollte, sind die so genannten statischen Variablen. Diese sind nützlich, wenn eine Variable auf jeden Fall nur einmal initialisiert werden soll. Folgendes Beispiel verdeutlicht eine Einsatzmöglichkeit von statischen Variablen:

<?php
function individuelleFunktion($parameter1, $parameter2) {
$counter = 0;
echo
$counter;
$counter++;
}
?>

Diese Funktion würde die Variable $counter zwar nach der Ausgabe hoch zählen, sie aber gleichzeitig bei jedem neuen Aufruf wieder auf Null setzen. Dies umgeht mit dem Setzen einer statischen Variable.

<?php
function individuelleFunktion($parameter1, $parameter2) {
static
$counter = 0;
echo
$counter;
$counter++;
}
?>

Nun wird die Variable $counter beim ersten Aufruf der Funktion initialisiert, dann aber nicht wieder. Die Funktion kann beliebig oft aufgerufen werden, ohne dass sie wieder auf Null gesetzt werden würde. Stattdessen wird sie, wie gewünscht, hoch gezählt.

Eine nützliche Sache bei PHP-Funktionen sind optionale Parameter. Dabei handelt es sich um Parameter, die zwar beim Funktionsaufruf definiert werden, beim Ablauf der Funktion aber nicht zwingend benutzt werden. Dies ermöglicht den Aufruf einer Funktion mit weniger Parametern, als eigentlich unterstützt werden. Dazu gibt es die Möglichkeit, den Parametern in der Parameterliste Standardwerte zuzuweisen, die verwendet werden, falls nichts übergeben wird.

<?php
function individuelleFunktion($parameter1, $parameter2 = 'standardwert') {
echo
'erster Wert: '.$parameter1.' und
zweiter Wert: '
.$parameter2;
}
individuelleFunktion(4, 1);
// gibt erster Wert: 4 und zweiter Wert: 1 aus
individuelleFunktion(4);
// gibt erster Wert: 4 und zweiter Wert: standardwert aus

?>

So ist es ohne Probleme möglich, den Funktionsaufruf relativ variabel zu gestalten und sich keine Gedanken um möglicherweise nicht zu befüllende Parameter machen zu müssen.

Kommen wir zu einem der wichtigsten Eigenschaften einer Funktion, dem Rückgabewert. Man könnte zwar die Ergebnisse einer Funktion direkt innerhalb des Funktionsaufrufes per echo ausgeben, meist macht es aber mehr Sinn, den entsprechenden Wert in eine Variable zu schreiben um damit weiterarbeiten zu können. Wie aus anderen Programmiersprachen bekannt, wird dies auch bei PHP mit der Anweisung „return“ erledigt. Wichtig zu wissen ist, dass mit dem Return-Befehl gleichzeitig auch die Funktion verlassen wird. Es ist also nicht möglich, nach der Return-Anweisung noch Aufrufe innerhalb der Funktion zu gestalten.

Beispielcode:

<?php
$unixtime
= 1249021953;

function
individuelleFunktion($time) {
$datum = date('d.m.Y', $time);
return
$datum;
echo
'Testausgabe!';
}
echo
individuelleFunktion($unixtime);
?>

Hier wird also per Parameterliste der in die Variable $unixtime gespeicherte Timestamp an die Funktion übergeben. Diese wandelt ihn in ein lesbares Datum um und gibt ihn zurück. Das „echo“ innerhalb der Funktion wird nicht mehr abgearbeitet, weil es nach dem Return-Kommando aufgeführt ist.

Für viele Entwickler ein leidiges Thema, ist auch bei PHP-Funktionen die Dokumentation sehr wichtig. Das Kredo, dass auch bei PHP-Code jeder Programmteil nur so gut ist wie seine Dokumentation, sollte sich jeder Anwendungsentwickler zu herzen nehmen. Schließlich erleichtert eine gute und möglichst vollständige Dokumentation nicht nur die eigene Bearbeitung des Quelltextes zu einem späteren Zeitpunkt. Auch andere Entwickler finden sich viel leichter zurecht, wenn der ursprüngliche Autor möglichst viel dokumentiert hat.

Zur Dokumentation eigener Funktionen gibt es zwei Möglichkeiten. Entweder man dokumentiert direkt im Quelltext einzelne Codezeilen oder Codeausschnitte oder man verfasst eine separate Dokumentation. Im Optimalfall und bei größeren Projekten vermischt man beide Formen der Dokumentation und erhält somit das perfekte Ergebnis. Für professionelle Zwecke eignet sich auch der Einsatz eines Dokumentationstools für PHP, zum Beispiel dem phpDocumentator. Dieses Vorgehen ist auch nützlich, wenn der Quelltext an sich einmal verkauft werden soll, oder wenn die Anwendung der Open-Source-Gemeinde zur Verfügung gestellt werden soll. Denn: Kommentierter und dokumentierter Quelltext hat deutlich mehr Wert als nicht dokumentierter.

Alles in Allem ist die Verwendung von PHP-Funktionen, ob vorgefertigt oder aus der eigenen Feder, eine sehr sinnvolle Ergänzung für alle, die bisher bei ähnlichen Abläufen im PHP-Skript den Quelltext einfach wiederholt haben. Sie gehören zum Handwerkszeug eines jeden guten PHP-Entwicklers und sollten ausgiebig eingesetzt werden. Nützlich ist es im Übrigen auch, Funktionen in ein oder mehrere separate Files auszulagern, der Übersichtlichkeit und Wartbarkeit wegen.

Weiterführende Links, die vielleicht für sie auch interessant sein könnten:
Php Function - die aktuelle deutsche Dokumentation zum Thema Function auf der Webseite von www.php.net


weiter Suchen und Ersetzen mit Php