Funktion definieren:
<?php //Für $arg_1 wird ein Stanrdardwert gesetzt. function myfoofunction ($arg_1 = "Standard", $arg_2) { //Beliebiger korrekter PHP Code return $retval; } ?>
- In der Funktion kann jeder beliebige PHP Code vorkommen, also auch Klassen oder Funktionsdefinitionen
- Funtionen sind case-insensitive. RegEx: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff] (bedeutet am Anfang ein Buchstabe, gefolgt von beliebig vielen Buchstaben, Ziffern oder Unterstrichen ;))
- Funktionen können aufgerufen werden, bevor diese definiert sind. Ausnahme: Definition erfolgt nur bedingt (z.B.: in einer if Anweisung).
- Parameter und Return Value sind optional (ggf. Standard setzen, um Warning zu vermeiden)
- Alle Funktionen und Klassen sind im Global Scope, können also außerhalb der Funktion aufgerufen werden, auch wenn sie in dieser definiert wurden.
- In der Funktion deklarierte Variablen sind hingegen nur innerhalb der Funktion sichtbar.
Function Handling Funktionen (Ausführung jeweils innerhalb der Funktion):
//Anzahl der an eine Funktion übergebenen Argumente int func_num_args ( void ) //Liefert das $arg_num'ste Argument (Wert) int func_num_args ( void ) mixed func_get_arg ( int $arg_num ) //Liefert Argumente (Werte) als Array array func_get_args ( void )
Parameter:
- Komma-separierte Liste
- Standard: Wert
- Alternativ mit einem & vor der Variable als Verweis. -> Änderungen an der Variable werden auch außerhalb der Funktion sichtbar. Beispiel zum Verweis:
<?php function addpostfix(&$string) { $string. = 'und so weiter.'; } $str = 'Sport ist Mord '; addpostfix($str); echo $str; //Sport ist MOrd und so weiter
- Type Declaration: Es können für die Parameter die Typen mit angegeben werden. Wenn diese strikt gehandhabt werden sollen, muss declare(strict_types=1); aufgerufen werden:
<?php declare(strict_types=1) function sum(int $a, int $b) { return $a + $b; } var_dump(sum(2.5, 1.5)); //wird hier nicht funktionieren; ohne strict types: 3
Die Funktionsausführung wird durch den return-Befehl beendet. Es können auch Arrays, Objekte oder anonyme Funktionen (Closure) zurückgegeben werden.
Bei Rückgabe einer Referenz muss der Referenz-Operator & sowohl in der Funktionsdeklaration, als auch bei der Zuweisung des zurückgegebenen Wertes (jeweils vor der Funktion) angegeben werden.