PHP - Strict Typing: A Beginner's Guide
Hallo那里,未来的PHP巫师们!我很高兴带你们进入PHP严格类型的迷人世界。作为一个教PHP多年的老师,我可以告诉你,理解这个概念会让你成为一个更好的程序员。那么,让我们开始吧!
Was ist Strict Typing?
Bevor wir ins Detail gehen, lassen Sie uns verstehen, worum es bei strenger Typisierung geht. Stellen Sie sich vor, Sie backen einen Kuchen. Sie würden stattdessen Salz anstatt Zucker verwenden, oder? Das liegt daran, dass das Rezept streng bezüglich der Zutaten ist, die verwendet werden sollen. Ähnlich verhält es sich mit der strengen Typisierung in PHP, die darum geht, präzise mit den Datentypen umzugehen, die wir in unserem Code verwenden.
Warum.Strict Typing Wichtig ist
Vielleicht fragen Sie sich, "Warum sollte ich mir die Mühe mit strenger Typisierung machen?" Na, junger Padawan, strenges Tippen hilft dabei, Bugs zu vermeiden, macht Ihren Code zuverlässiger und kann sogar die Leistung verbessern. Es ist wie ein wachsamischer Wächter für Ihren Code!
Beispiel: Die Gefahren der lockeren Typisierung
Lassen Sie uns mit einem einfachen Beispiel beginnen, um zu zeigen, warum strenges Tippen ein Lebensretter sein kann:
function addNumbers($a, $b) {
return $a + $b;
}
echo addNumbers(5, "10"); // Ausgabe: 15
echo addNumbers("5", "10"); // Ausgabe: 15
In diesem Beispiel konvertiert PHP automatisch die Zeichenkette "10" in eine Ganzzahl. Dieses Verhalten,称为 "Type Juggling", kann manchmal zu unerwarteten Ergebnissen führen. Was ist, wenn jemand versehentlich eine Zeichenkette übermittelt, die nicht in eine Zahl konvertiert werden kann? Chaos ensues!
Einführung der Typenhinweise
Typenhinweise sind wie Namensschilder für Ihre Funktion参数. Sie sagen PHP: "Hey, ich möchte nur diese spezifische Art von Daten hier!"
Lassen Sie uns unser vorheriges Beispiel aufrüsten:
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, 10); // Ausgabe: 15
echo addNumbers("5", "10"); // Wirft einen TypeError
Jetzt wirft PHP einen Fehler (genauer gesagt, einen TypeError), wenn jemand versucht,"strings" anstelle von Ganzzahlen zu übermitteln. Es ist wie ein Türsteher in einem Club, der die Ausweise überprüft!
Verfügbare Typenhinweise
PHP bietet eine Vielzahl von Typenhinweisen. Hier ist eine praktische Tabelle der häufigsten:
Typenhinweis | Beschreibung |
---|---|
int | Ganzzahlen |
float | Fließkommazahlen |
string | Textzeichenketten |
bool | Boolesche (true/false) Werte |
array | Arrays |
object | Jegliches Objekt |
callable | Funktion oder Methoden, die aufgerufen werden können |
iterable | Arrays oder Objekte, die Traversable implementieren |
self | Die gleiche Klasse, in der es verwendet wird |
?type | Nullable-Typ (kann der angegebene Typ oder null sein) |
Die Macht von strict_types
Nun, nehmen wir es mit strict_types
eine Stufe höher. Das ist wie das Einschalten des "super strengen Modus" für PHP.
Um die strenge Typisierung zu aktivieren, fügen Sie diese Zeile ganz oben in Ihre PHP-Datei ein:
<?php
declare(strict_types=1);
function divideNumbers(int $a, int $b): float {
return $a / $b;
}
echo divideNumbers(10, 3); // Ausgabe: 3.3333333333333
echo divideNumbers(10, "3"); // Wirft einen TypeError
Wenn strict_types
aktiviert ist, wird PHP viel anspruchsvoller in Bezug auf Typen. Es wird nicht einmal versuchen, "3" in eine Ganzzahl zu konvertieren. Es ist wie ein Mathematiklehrer, der präzise Berechnungen verlangt!
Der Rückgabewert
Haben Sie bemerkt, das : float
nach den Funktion参数? Das ist die Rückgabetypdeklaration. Sie tells PHP, dass diese Funktion einen Fließkommawert zurückgeben muss.
function greet(string $name): string {
return "Hello, $name!";
}
echo greet("Alice"); // Ausgabe: Hello, Alice!
echo greet(123); // Wirft einen TypeError
Praktisches Beispiel: Ein einfacher Taschenrechner
Lassen Sie uns alles mit einem praktischeren Beispiel zusammenführen:
<?php
declare(strict_types=1);
class Calculator {
public function add(float $a, float $b): float {
return $a + $b;
}
public function subtract(float $a, float $b): float {
return $a - $b;
}
public function multiply(float $a, float $b): float {
return $a * $b;
}
public function divide(float $a, float $b): float {
if ($b == 0) {
throw new Exception("Division durch Null ist nicht erlaubt");
}
return $a / $b;
}
}
$calc = new Calculator();
try {
echo $calc->add(5.5, 3.2) . "\n"; // Ausgabe: 8.7
echo $calc->subtract(10, 4) . "\n"; // Ausgabe: 6
echo $calc->multiply(2.5, 3) . "\n"; // Ausgabe: 7.5
echo $calc->divide(15, 3) . "\n"; // Ausgabe: 5
echo $calc->divide(10, 0); // Wirft eine Ausnahme
} catch (TypeError $e) {
echo "Typfehler: " . $e->getMessage();
} catch (Exception $e) {
echo "Fehler: " . $e->getMessage();
}
In diesem Beispiel haben wir eine Calculator
-Klasse mit Methoden erstellt, die strenge Typisierung verwenden. Beachten Sie, dass wir für alle Zahlen float
verwenden, um sowohl Ganzzahlen als auch Dezimalzahlen zu verarbeiten.
Fazit
Glückwunsch! Sie haben gerade Ihre ersten Schritte in die Welt der PHP-Strengtypisierung gemacht. Denken Sie daran, strenges Tippen ist wie das Tragen eines Sicherheitsgurtes beim Coden – es mag zunächst einschränkend erscheinen, aber es schützt Sie vor bösen Bugs und Abstürzen.
While Sie Ihre PHP-Reise fortsetzen, üben Sie weiterhin mit strenger Typisierung. Es wird Sie zu einem disziplinierteren und zuverlässigeren Programmierer machen. Und wer weiß? Vielleicht sind Sie eines Tages derjenige, der anderen über die Wunder der strengen Typisierung in PHP beigebringt!
Fröhliches Coden und möge Ihre Typen stets streng und Ihre Fehler fåh sein!
Credits: Image by storyset