Zum Inhalt springen

PHP Basics: Funktionen

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.