## Interne (eingebaute) Funktionen

PHP enthält standardmäßig viele Funktionen und Konstrukte. Außerdem gibt es viele Funktionen die voraussetzen, dass bestimmte PHP-Erweiterungen einkompiliert wurden, andernfalls erhalten Sie beim Aufruf "undefined function"-Fehlermeldungen. Um z. B. Grafik-Funktionen wie imagecreatetruecolor() nutzen zu können, müssen Sie PHP mit GD-Unterstützung kompilieren, oder um mysqli_connect() nutzen zu können, muss Ihr PHP mit MySQLi-Unterstützung kompiliert sein. Viele Kernfunktionen, z. B. die String- und Variablen-Funktionen sind bereits in jeder PHP-Version enthalten. Ein Aufruf von phpinfo() oder get_loaded_extensions() zeigt Ihnen, welche Erweiterungen in Ihrer PHP-Installation verfügbar sind. Beachten Sie außerdem, dass viele Erweiterungen bereits standardmäßig aktiviert sind und das PHP-Handbuch nach Erweiterungen unterteilt ist. Weitere Informationen zur Einrichtung von PHP finden Sie in den Kapiteln Konfiguration, Installation und den Kapiteln zu den einzelnen Erweiterungen.

Wie Funktionsprototypen zu lesen und zu verstehen sind, wird im Kapitel Wie man eine Funktionsdefinition (Prototyp) liest erklärt. Es ist wichtig zu erkennen, was eine Funktion zurückgibt und ob die übergebenen Parameter verändert werden. So gibt z. B. str_replace() den bearbeiteten String zurück, während usort() die übergebene Variable direkt bearbeitet. Jede Handbuchseite enthält auch spezifische Informationen zu jeder Funktion, wie Informationen über ihre Parameter, die Rückgabewerte sowohl bei Erfolg als auch im Fehlerfall, Änderungen des Verhaltens und die Verfügbarkeit. Die Kenntnis dieser wichtigen (aber oft subtilen) Unterschiede ist von entscheidender Bedeutung für das Schreiben korrekten PHP-Codes.

> Hinweis: Wenn Funktionen andere Parameter erhalten als erwartet, d. h. wenn z. B. ein Array übergeben wird, obwohl ein String erwartet wird, so ist der Rückgabewert undefiniert. In solchen Fällen ist es üblich, dass `null` zurückgegeben wird. Dies ist aber nur eine Konvention, auf die Sie sich nicht unbedingt verlassen können. Seit PHP 8.0.0 sollte in diesem Fall eine TypeError-Exception ausgelöst werden.

> Hinweis:

> Bei eingebauten Funktionen sind skalare Typen im erzwingenden Modus standardmäßig nullbar. Seit PHP 8.1.0 wird in diesem Modus davon abgeraten, an eine interne Funktion für einen Parameter, der nicht als nullbar deklariert ist, `null` zu übergeben. Um sich dem Verhalten benutzerdefinierter Funktionen anzupassen, bei denen skalare Typen explizit als nullbar deklariert werden müssen, wird in diesem Fall ein entsprechender Missbilligungs-Hinweis ausgegeben.

> Zum Beispiel erwartet die Funktion strlen(), dass der Parameter `$string` eine nicht-nullbare Zeichenkette ist. Aus historischen Gründen erlaubt PHP, für diesen Parameter im erzwingenden Modus `null` zu übergeben. Der Parameter wird dabei stillschweigend in den Typ String umgewandelt, was den Wert `""` ergibt. Im Gegensatz dazu wird im strikten Modus ein TypeError ausgegeben.

> `<?php
> var_dump(strlen(null));
> // "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated" as of PHP 8.1.0
> // int(0)
> var_dump(str_contains("foobar", null));
> // "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated" as of PHP 8.1.0
> // bool(true)
> ?>`

### Siehe auch

- function_exists()
- die Funktionsreferenz
- get_extension_funcs()
- dl()

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open