PHP - Объявления скалярных типов

Здравствуйте,future programmers! Сегодня мы отправимся в увлекательное путешествие в мир PHP, конкретно focusing на объявление скалярных типов. Не волнуйтесь, если эти слова пока что seem like gibberish – к концу этого урока вы будете использовать эти термины так же свободно, как опытный разработчик!

PHP - Scalar Type Declarations

Что такое объявления скалярных типов?

Прежде чем мы углубимся, давайте разберемся, что же такое "Объявления скалярных типов". В программировании "скаляр" - это единичное значение, например число или строка текста. "Объявление типа" - это изысканный способ сказать, что мы говорим PHP, какого рода данные мы ожидаем получить от функции или вернуть.

Представьте, что вы управляете киоском с лимонадом. Вы бы не хотели, чтобы кто-то handed вам basketball, когда вы просите лимоны, верно? Именно для этого существуют объявления типов – они обеспечивают, чтобы ваш код работал с правильным видом данных.

Объявления скалярных типов в PHP 7

PHP 7 introduced eine bahnbrechende Funktion: die Fähigkeit, skalare Typen für Funktion参数 und Rückgabewerte zu deklarieren. Das war ein großer Deal, weil es Fehler frühzeitig erkannte und den Code zuverlässiger machte.

Schauen wir uns ein einfaches Beispiel an:

function addNumbers(int $a, int $b): int {
return $a + $b;
}

echo addNumbers(5, 10); // Ausgabe: 15

In diesem Code:

  • int $a, int $b: Wir sagen, dass sowohl $a als auch $b Ganzzahlen sein sollten.
  • : int: Dieser Teil nach der Funktion gibt an, dass die Funktion eine Ganzzahl zurückgeben wird.

Nun, lassen Sie uns etwas Schlimmes versuchen:

echo addNumbers("5", "10");

Überraschung! Das funktioniert immer noch und gibt 15 aus. Aber warum? Willkommen in der Welt von...

Coercive Mode

Standardmäßig arbeitet PHP 7 im sogenannten "Coercive Mode". Es ist, als hätte man einen wirklich verständnisvollen Freund, der versucht, was man sagt, zu verstehen, auch wenn man nicht helt klar ist.

Im Coercive Mode versucht PHP, Werte, falls möglich, in den deklarierten Typ umzuwandeln. Also als wir "5" und "10" als Zeichenfolgen übergeben haben, sagte PHP: "Ich sehe, was du vorhast", und wandelte sie in Ganzzahlen um.

Hier ist eine Tabelle mit einigen häufigen Coercionen:

Eingabe Deklarierter Typ Ergebnis
"42" int 42
"3.14" float 3.14
1 string "1"
true int 1

Aber was ist, wenn wir want PHP strenger zu sein? Enter...

Strict Mode

Strict Mode ist wie ein Lehrer, der präzise Antworten fordert. Um den Strict Mode zu aktivieren, fügen Sie diese Zeile ganz oben in Ihre PHP-Datei ein:

declare(strict_types=1);

Nun, lassen Sie uns unseren schlimmen Versuch noch einmal versuchen:

declare(strict_types=1);

function addNumbers(int $a, int $b): int {
return $a + $b;
}

echo addNumbers("5", "10");

Bam! Dies wird jetzt einen TypeError auslösen. PHP sagt: "Ich bat um Ganzzahlen, und du gabst mir Zeichenfolgen. Das gefällt mir nicht."

Warum skalare Typen deklarieren?

  1. Klarerer Code: Es ist wie eine Notiz für zukünftiges Ich (oder andere Entwickler). "Hey, diese Funktion erwartet Zahlen!"

  2. Fehler frühzeitig erkennen: Stattdessen merkwürdige Ergebnisse, erhalten Sie Fehler, die direkt auf das Problem hinweisen.

  3. Bessere Leistung: PHP kann den Code besser optimieren, wenn es genau weiß, welche Typen zu erwarten sind.

Ein realweltliches Beispiel

Angenommen, Sie bauen eine einfache Calculator-App. So könnten Sie skalare Typendeklarationen verwenden:

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("Cannot divide by zero!");
}
return $a / $b;
}
}

$calc = new Calculator();

echo $calc->add(5.5, 4.5);      // Ausgabe: 10
echo $calc->subtract(10, 3);    // Ausgabe: 7
echo $calc->multiply(3, 4);     // Ausgabe: 12
echo $calc->divide(10, 2);      // Ausgabe: 5

// Dies wird im Strict Mode einen Fehler auslösen
// echo $calc->add("5", "10");

In diesem Beispiel haben wir eine Calculator-Klasse mit Methoden erstellt, die alle float-Typendeklarationen verwenden. Dies stellt sicher, dass alle unsere Berechnungen mit Zahlen arbeiten, verhindert versehentliche Zeichenkettenverkettungen oder andere typbezogene Missgeschicke.

Schlussfolgerung

Skalare Typendeklarationen in PHP sind wie Leitplanken auf einer Gebirgsstraße. Sie helfen, Ihren Code auf Kurs zu halten und machen es einfacher, festzustellen, wenn etwas falsch läuft. Obwohl sie initially seem a bit fussy, trust me – zukünftiges Ich wird dankbar sein für die Klarheit und Sicherheit, die sie bieten.

Denken Sie daran, Programmierung ist alle عن klarer Kommunikation – nicht nur mit dem Computer, sondern auch mit anderen Entwicklern (einschließlich zukünftigen Ich!). Typendeklarationen sind ein weiteres Werkzeug in Ihrer Toolbox, um klareren, sichereren und effizienteren Code zu schreiben.

Nun, gehen Sie und deklarieren Sie diese Typen! Ihr Code wird es Ihnen danken, und Ihre Kollegen Entwickler auch. Viel Spaß beim Programmieren!

Credits: Image by storyset