PHP - Call by Value: Ein freundlicher Leitfaden für Anfänger

Hallo da draußen, zukünftige PHP-Superstars! Ich freue mich sehr, Ihr Guide auf dieser aufregenden Reise in die Welt der PHP-Programmierung zu sein. Heute tauchen wir in ein grundlegendes Konzept namens "Call by Value" ein. Keine Sorge, wenn es sich etwas einschüchternd anhört – ich verspreche, wir werden es in mundgerechte Stücke zerlegen, die leicht zu verdauen sind!

PHP - Call by value

Was ist "Call by Value"?

Bevor wir uns dem Code zuwenden, lassen Sie uns verstehen, was "Call by Value" bedeutet. Stellen Sie sich vor, Sie haben eine Kochkarte mit Anweisungen. Wenn Sie diese Karte mit einem Freund teilen, geben Sie ihm nicht Ihre Originalkarte – Sie machen eine Kopie. Auf diese Weise bleibt Ihre Originalrezeptur sicher, wenn sie versehentlich Sauce darauf verschüttet oder Änderungen vornimmt. Genau das tut "Call by Value" im Programmieren!

In PHP wird, wenn Sie eine Variable an eine Funktion mit "Call by Value" übergeben, die Funktion eine Kopie des Wertes der Variable erhält, nicht die Originalvariable selbst. Das bedeutet, dass jede Änderung, die an der Variable innerhalb der Funktion vorgenommen wird, die Originalvariable außerhalb der Funktion nicht beeinflusst.

Nun sehen wir das mit einigen Beispielen in Aktion!

Beispiel 1: Der Geburtstagskuchen

Lassen Sie uns mit einem einfachen Beispiel beginnen. Stellen Sie sich vor, wir backen einen Geburtstagskuchen und möchten Kerzen hinzufügen:

function addCandles($age) {
$age = $age + 1;
echo "Innerhalb der Funktion: $age Kerzen\n";
}

$myAge = 25;
echo "Vor der Funktion: $myAge Jahre alt\n";
addCandles($myAge);
echo "Nach der Funktion: $myAge Jahre alt\n";

Wenn Sie diesen Code ausführen, sehen Sie folgendes:

Vor der Funktion: 25 Jahre alt
Innerhalb der Funktion: 26 Kerzen
Nach der Funktion: 25 Jahre alt

Was ist hier passiert? Lassen Sie uns das durcharbeiten:

  1. Wir begannen mit $myAge, das auf 25 gesetzt ist.
  2. Wir riefen die Funktion addCandles auf und übergaben $myAge.
  3. Innerhalb der Funktion.addierten wir 1 zu $age (das eine Kopie von $myAge ist).
  4. Die Funktion打印te 26 Kerzen.
  5. Außenhalb der Funktion ist $myAge immer noch 25!

Das ist "Call by Value" in Aktion. Die Funktion arbeitete mit einer Kopie von $myAge, sodass dieOriginalvariable unverändert blieb.

Beispiel 2: Die Einkaufsliste

Lassen Sie uns ein anderes Beispiel versuchen. Dieses Mal arbeiten wir mit einer Einkaufsliste:

function addItem($list, $item) {
$list[] = $item;
echo "Innerhalb der Funktion: " . implode(", ", $list) . "\n";
}

$myList = ["äpfel", "bananen"];
echo "Vor der Funktion: " . implode(", ", $myList) . "\n";
addItem($myList, "orangen");
echo "Nach der Funktion: " . implode(", ", $myList) . "\n";

Wenn Sie diesen Code ausführen, erhalten Sie:

Vor der Funktion: äpfel, bananen
Innerhalb der Funktion: äpfel, bananen, orangen
Nach der Funktion: äpfel, bananen

Was passiert hier?

  1. Wir beginnen mit einer Einkaufsliste, die äpfel und bananen enthält.
  2. Wir rufen die Funktion addItem auf und übergeben unsere Liste und "orangen".
  3. Innerhalb der Funktion wird "orangen" zur Kopie der Liste hinzugefügt.
  4. Die Funktion zeigt die aktualisierte Liste mit orangen an.
  5. Außenhalb der Funktion ist unsereOriginalliste unverändert!

Again, "Call by Value" stellt sicher, dass unsereOriginalEinkaufsliste nicht geändert wurde.

Beispiel 3: Der Zahlenverdoppler

Lassen Sie uns noch ein weiteres Beispiel betrachten, um dieses Konzept wirklich zu verankern:

function doubleNumber($num) {
$num *= 2;
echo "Innerhalb der Funktion: $num\n";
return $num;
}

$myNumber = 5;
echo "Vor der Funktion: $myNumber\n";
$result = doubleNumber($myNumber);
echo "Funktion zurückgegeben: $result\n";
echo "Nach der Funktion: $myNumber\n";

Dies wird die folgende Ausgabe erzeugen:

Vor der Funktion: 5
Innerhalb der Funktion: 10
Funktion zurückgegeben: 10
Nach der Funktion: 5

Lassen Sie uns das analysieren:

  1. Wir beginnen mit $myNumber als 5.
  2. Wir rufen doubleNumber auf und übergeben $myNumber.
  3. Innerhalb der Funktion wird die Kopie der Zahl auf das Doppelte verdoppelt.
  4. Die Funktion gibt diesen verdoppelten Wert zurück.
  5. Außenhalb der Funktion ist $myNumber immer noch 5, aber wir haben das verdoppelte Ergebnis in $result.

Dieses Beispiel zeigt, dass selbst wenn eine Funktion einen Wert zurückgibt, dieOriginalvariable, die an sie übergeben wurde, aufgrund von "Call by Value" unverändert bleibt.

Warum ist "Call by Value" wichtig?

Vielleicht fragen Sie sich, "Warum brauchen wir das?" Nun, "Call by Value" ist entscheidend für die Wahrung der Datenintegrität in Ihren Programmen. Es verhindert, dass Funktionen versehentlich Variablen ändern, die sie nicht sollten, was zu unerwarteten Fehlern und schwer zu verfolgenden Problemen führen kann.

Stellen Sie sich vor, wenn Sie jedes Mal, wenn Sie ein Buch an einen Freund verleihen, sie versehentlich (oder absichtlich) die Geschichte ändern könnten! Das wäre Chaos! "Call by Value" ist wie das Geben einer Fotokopie anstatt desOriginals – sie können alle Notizen machen, die sie wollen, aber IhrOriginalbuch bleibt makellos.

Eine schnelle Referenztabelle

Hier ist eine praktische Tabelle, die zusammenfasst, was wir über "Call by Value" in PHP gelernt haben:

Aspekt Beschreibung
Definition Funktion erhält eine Kopie des Wertes der Variable
Original Variable Verbleibt unverändert nach dem Funktionsaufruf
Funktionsparameter Kann innerhalb der Funktion geändert werden, ohne dasOriginal zu beeinflussen
Verwendungszweck Erhaltung der Datenintegrität, Verhinderung unerwünschter Nebenwirkungen
Speicher Erzeugt eine neue Kopie, was mehr Speicher für große Datenstrukturen verbrauchen kann

Abschluss

Glückwunsch! Sie haben die ersten Schritte in das Verständnis von "Call by Value" in PHP unternommen. Erinnern Sie sich daran, dass dieses Konzept wie das Machen einer Fotokopie Ihrer Variable ist, bevor Sie sie an eine Funktion übergeben. Die Funktion kann auf dieser Kopie herumkritzeln, aber IhrOriginal bleibt sicher und unverändert.

Als Sie Ihre Reise durch PHP fortsetzen, werden Sie auf komplexere Szenarien stoßen und sogar das Gegenstück zu "Call by Value", nämlich "Call by Reference", kennenlernen. Aber für jetzt – gratulieren Sie sich selbst, Sie haben ein grundlegendes Konzept gemeistert, das Ihnen in Ihren programmierischen Abenteuern gut dienen wird!

Weiters codieren, bleiben Sie neugierig und erinnern Sie sich daran – in der Welt von PHP sind Ihre Variablen wie Ihre wertvollen Rezepte. "Call by Value" stellt sicher, dass sie keine unerwarteten Zutaten hinzugefügt bekommen!

Credits: Image by storyset