PHP - Strict Typing: A Beginner's Guide

Hallo那里,未来的PHP巫师们!我很高兴带你们进入PHP严格类型的迷人世界。作为一个教PHP多年的老师,我可以告诉你,理解这个概念会让你成为一个更好的程序员。那么,让我们开始吧!

PHP - Strict Typing

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