Warum können PHP-Funktionen boolesche Argumente akzeptieren, wenn sie nach ganzen Zahlen fragen?

Lesezeit: 2 Minuten

Benutzer-Avatar
WPStudent

Ich habe in einem WordPress-Lehrbuch gelesen, wo ich eine kurze Beschreibung für die folgende Funktion gefunden habe:

function is_super_admin( $user_id = false ) {...

Diese Funktion bestimmt, ob der Benutzer ein Site-Administrator ist.

Meine Frage bezieht sich jedoch darauf, wie PHP mit den Parametern umgeht.

Die obige Funktion erhält einen ganzzahligen Parameter, und wenn Sie ihr nichts übergeben, weist sie einen Standardwert von zu FALSE.

Hier meine Frage:

FALSE ist ein BOOLEAN Datentyp, und diese Funktion sollte an akzeptieren INTEGER Datentyp.

Wie kann es also erlaubt sein, einen booleschen Wert bereitzustellen, wenn wir einen ganzzahligen Wert bereitstellen sollten?

  • Sie erklären nirgendwo, dass der Parameter ein ist intwarum sollte nicht es funktioniert?

    – verzeihen

    24. Juli 2017 um 8:50 Uhr

  • PHP ist dynamisch typisiert. Sie können Argumente verschiedener Typen übergeben, es sei denn, es wird ausdrücklich etwas anderes angegeben. In diesem speziellen Fall können Sie grundsätzlich alles passieren.

    – Mjh

    24. Juli 2017 um 8:50 Uhr

  • Lesen Sie mehr über Typ Jonglieren in PHP.

    – axiak

    24. Juli 2017 um 8:50 Uhr

  • is_super_admin() ist eine benutzerdefinierte Funktion in WordPress. Sie finden diese Funktion in der Datei /wp-includes/capabilities.php. PHP-Funktionsargumente sind dynamisch typisiert, wenn Sie sie nicht als strikt typisiert deklarieren. In diesem Funktionsargument $user_id ist dynamisch. $user_id kann alle Arten von DataType akzeptieren.

    – Beschwöre Sarker

    24. Juli 2017 um 9:06 Uhr


PHP 7 führte skalare Typdeklarationen ein.

Es gibt sie in zwei Geschmacksrichtungen: zwanghaft (Standard) und streng. Die folgenden Typen von Parametern können jetzt erzwungen werden (entweder zwingend oder strikt): Zeichenfolgen (string), ganze Zahlen (int), Gleitkommazahlen (float) und boolesche Werte (bool). Sie ergänzen die anderen in PHP 5 eingeführten Typen: Klassennamen, Interfaces, Array und Callable.

Die folgende Zeile

function is_super_admin( $user_id = false ) { . . . .

gibt nicht den Typ des Parameters an. Wenn es stattdessen wäre:

function is_super_admin( int $user_id = false ) { . . . .

dann würde es einen Fehler produzieren.

Ich vermute, dass es standardmäßig auf false gesetzt ist, da es einfacher ist, mit einem simplen Wert nach einem gültigen Wert zu suchen if da sowohl false als auch/oder ein int gleich 0 als false ausgewertet wird.

Mehr zu den neuen Funktionen von PHP 7 hier.

1373520cookie-checkWarum können PHP-Funktionen boolesche Argumente akzeptieren, wenn sie nach ganzen Zahlen fragen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy