Funktionen sind Unterprogramme. Dabei ist es besonders sinnvoll Unterprogramme dann anzulegen, wenn sie innerhalb des Programmes mehrmals aufgerufen werden. Funktionen bekommen Parameter übergeben. Sie liefern einen Parameter wieder zurück.
In PHP können Funktionen wie folgt angelegt werden:
<?php function kleiner ($a, $b = 0) { if ($a < $b) return 1; else return 0; } ?>
Und wie folgt kann diese Funktion dann aufgerufen werden.
Wie oben ersichtlich erhält diese Funktion zwei Übergabewerte $a und $b. Dabei kann der Übergabewert von $b auch leer gelassen werden. Es wird automatisch der in dem Funktionskopf angegebene Default-Wert von $b = 0 eingesetzt. Die Funktion überprüft ob $a kleiner als $b ist und gibt dementprechend einen Wert mit return zurück.
Funktionen haben in PHP noch weitere Features. So kann die Anzahl der übergebenen Variablen dynamisch gestaltet werden, die Variablen können als Referenzen ähnlich wie in C++ übergeben werden. Für weitere Feinheiten bezüglich der Funktionen verweise ich auf das Handbuch von PHP.
Mit Hilfe von static kann man innerhalb von Funktionen Variablen als statisch deklarieren, damit es immer die gleiche Variable bleibt. Variablen in Funktionen, die dieses Keyword nicht tragen, werden bei jedem Aufruf der Funktion neu erzeugt.
PHP bietet eine Vielzahl an mitgelieferten Funktionen, die benutzt werden können, um mannigfaltige Aufgaben zu erledigen. Einige dieser Funktionen möchte ich auch im Rahmen dieser Anleitung vorstellen.
Mit den Funktionen kann man nun munter drauflos programmieren. Mit ihnen ist ein mächtiges Hilfsmittel geschaffen, um Programme übersichtlicher zu gestalten. Jedoch tritt mit der Zeit das Problem auf, dass die Datei einfach zu lang wird und dementsprechend auch unübersichtlich wird. Vielleicht wird es auch ratsam, eine Funktion in mehreren Hauptprogrammen zu benutzen. Dann ist sie schnell von der einen PHP-Datei in die andere kopiert, um sie dort auch zu verwenden. So etwas sollte man jedoch vermeiden.
Stattdessen gibt es in PHP ein mächtiges Werkzeug, um externe Dateien in den Programmcode mit hinein zu nehmen. Mit include und require bzw. include_once und require_once läßt sich eine externe Datei an der Stelle des Befehls einfach in den Quellcode zur Laufzeit hineinkopieren. PHP verhält sich dann so, als ob die Datei an der Stelle des Befehls stehen würde.
Der Unterschied zwischen require und include ist, dass bei include der Compiler nicht abbricht, wenn er die entsprechende Datei nicht finden kann; bei require schon. Die …_once Ausdrücke stellen sicher, dass die Datei nur einmal eingefügt wird. Alle weiteren Ausdrücke werden ignoriert. Passiert dies nicht, so kann der Compiler Fehlermeldungen zurückgeben, denn ein und dieselbe Funktion z.B. kann nicht mehrfach deklariert werden.
PHP ist eine voll objektorientierte Sprache und verfügt deshalb über die Möglichkeit mit Objekten umzugehen. Von PHP4 auf PHP5 gibt es einige Erweiterungen an dem Sprachkonstrukt der Objekte, deshalb ist die Objektorientierung sehr versionsabhängig. Ich möchte zunächst besprechen, was ein Objekt ist, dann werde ich eine Einführung in objektorientierter Programmierung (kurz: OOP) in PHP4 geben.
Objekt-orientierte-Programmierung ist ein neuer Ansatz, der die rein imperative Programmierung erweitert oder sogar ersetzt.
Zu Beginn der Programmierung wurden sämtliche Programmanweisungen in ein Programm geschrieben, welches von vorne bis hinten durchlaufen wurde. Nachdem Rechenmaschinen zuvor fest verdrahtet waren, war dies eine Revolution, dass Programme in den Speicher hinein programmiert werden konnten und nicht mehr gesteckt oder verdrahtet werden mussten. In dieser Zeit kamen die ersten Compiler auf, die ein Programm aus einer Hochsprache in die Maschinensprache übersetzt haben. Nach einiger Zeit stellt man fest, dass Teile des Programmes immer wieder mit unterschiedlichen Eingabeparametern durchlaufen werden mussten. Man erkannte, dass man diese in Fuktionen (auch Prozeduren, Methoden, Unterprogramm etc. genannt) ausgelagert werden können. Allerdings ging die Kapselung der Funktionalität noch nicht weit genug. Man stellte fest, dass Programme mit ihren Daten korrospondieren, d.h. dass zu einer Menge von Funktionen auch immer eine Menge an Daten gehörte. Die Idee entwickelte sich, dass man Daten und Programmteile, die zueinander gehörten, von dem übrigen Programm abkapselt und in ein Objekt auslagert. Die objekt orientierte Programmierung (kurz: OOP) war geboren. Allerdings ist mit der objekt orientierten Programmierung noch lange nicht das Ende der Entwicklung erreicht. Die Weiterentwicklung von Programmiersprachen zu neuen Konzepten ist immer noch ein heißes Forschungsthema und wird es auch in absehbarer Zukunft bleiben.
Was sind nun Objekte?: Objekte verfügen immer über eine Schablone (in PHP und diversen anderen Programmiersprachen “Klasse” genannt). In dieser Klasse werden Variablen und Funktionen deklariert. Wird zur Laufzeit ein Objekt generiert, so ist es eine Instanz dieser Klasse und verfügt über dessen Variablen und Funktionen. Jedes einzelne Objekt hat neue Variableplätze, so dass die Variablen unter den Objekten untereinander nicht dieselben sind.
Eine Klasse in PHP4 kann zum Beispiel wie folgt definiert werden:
<?php class Auto { var $name; // nicht vorbelegte Variable var $tank = 100; // vorbelegte Variable // Konstruktor function Auto ($name = “Rostbeule”) // Rostbeule ist default { $this->name = $name; // setzt die Variable $name des Objekts auf den Übergabeparameter } function fahren ($strecke) { $this->tank = $this->tank - $strecke*0.1; } } ?>
Wir sehen hier eine recht einfache Klasse. Natürlich kann diese noch beliebig erweitert werden, indem man zum Beispiel den Sprittverbrauch fahrzeugspezifisch festlegt. Dieses kleine Beispiel soll jedoch genügen.
Steht vor einer Variable die Bezeichnung var, so handelt es sich hierbei um eine Objektvariable. Diese Variable kann von überall in dem Objekt mit $this->Variablename ausgelesen und gesetzt werden und gehört zu dem Objekt dazu. Unterschiedliche Objekte haben unterschiedliche Variableplätze. In unserem Beispiel würde das bedeuten, dass wenn ein Auto fährt der Tank des anderen nicht leer wird oder das jedes Auto seinen eigenen Tank hat. Variablen können wie gewohnt vorbelegt werden. In unserem Beispiel ist jedes neue Auto gleich ganz voll getankt (100 %)
Im obigen Beispiel sieht man noch einen Konstruktor. Der Konstruktur wird bei der Erzeugnung des Objektes aus der Klasse heraus aufgerufen. Ein Objekt aus obiger Klasse wird wie folgt erzeugt:
<?php $meinAuto = new Auto; $deinAuto = new Auto(“Heißer Schlitten”); ?>
Im ersten Fall wird der Default-Wert als Variableinhalt für die Variable $name gewählt. Mein Auto ist also eine Rostbeule. Im zweiten Fall wird “Heißer Schlitten” für die Variable $name gewählt.
Folgendermaßen kann man nun Funktionen der Objekte aufrufen:
<?php $meinAuto->fahren(10); ?>
Mein Auto fährt hiermit 10 Einheiten z.B. Kilometer.
Zum Inhaltsverzeichnis