PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Verhalten bei Parameter-Übergabe
Beitrag
<blockquote data-quote="Chriss1987" data-source="post: 1541373" data-attributes="member: 23088"><p><strong>AW: Verhalten bei Parameter-Übergabe</strong></p><p></p><p>Hallo,</p><p></p><p>wenn man die Funktion vtauschen() mal betrachtet und im Hinterkopf behält, dass php Scripte Zeile für Zeile abarbeitet,</p><p>würden die einzelnen Schritte so aussehen:</p><p></p><p>[php]<?php</p><p>$x = 10;</p><p>$y = 15;</p><p>1. function vtauschen($a, $b)</p><p> {</p><p>2. $temp = $a;</p><p>3. $a = $b;</p><p>4. $b = $temp;</p><p> }</p><p>vtauschen($x, $y);</p><p>?>[/php]</p><p></p><p>1. Schritt: Funktion wird aufgerufen, dabei werden die Variablen $a und $b mit den Werten, die übergeben wurden, initialisiert. Angenommen, wir rufen die Funktion mit vtauschen($x, $y) auf und haben zuvor $x mit 10 und $y mit 15 definiert, dann sind in Zeile 1 folgende Variablen mit folgenden Werten definiert:</p><p>$a = 10 und $b = 15</p><p></p><p>2. Schritt: es wird eine lokale Hilfsvariable $temp definiert und mit dem Wert von $a vorbelegt. Folgende Variablen sind der Funktion mit folgenden Werten bekannt:</p><p>$a = 10, $b = 15 und $temp = 10</p><p></p><p>3. Schritt: jetzt wird der Wert von $b auf $a kopiert, der vorige Wert von $a wird dabei überschrieben. Also sind der Funktion folgende Variablen und Werte bekannt:</p><p>$a = 15, $b = 15 und $temp = 10</p><p></p><p>4. Schritt: hier wird deutlich, dass eine Hilfvariable notwendig ist, da nach dem vorigen Schritt beide Variablen den gleichen Wert haben. In diesem Schritt wird nun der zwischengespeicherte Wert von $a über die Hilfsvariable $temp auf $b kopiert, somit sind der Funktion folgende Variablen und Werte bekannt:</p><p>$a = 15, $b = 10 und $temp = 10</p><p></p><p>Somit ist der Tausch vollzogen. Werde die Variablen als Referenz an die Funktion übergeben, ändert sich im Ablauf nichts, jedoch werden Änderungen, also Wertezuweisungen auf die übergebenen Variablen mit angewendet. Hier nochmal die Werte und Variablen der Schritte 1.-4., wenn die Variablen als Referenz übergeben werden (es wird zwischen lokal, also IN der Funktion und global, außerhalb der Funktion unterschieden:</p><p></p><p>[code]1. Schritt: lokal: $a = 10 und $b = 15; global: $x = 10 und $y = 15</p><p>2. Schritt: lokal: $a = 10, $b = 15 und $temp = 10; global: $x = 10 und $y = 15</p><p>3. Schritt: lokal: $a = 15, $b = 15 und $temp = 10; global: $x = 15 und $y = 15</p><p>4. Schritt: lokal: $a = 15, $b = 10 und $temp = 10; global: $x = 15 und $y = 10[/code]</p><p></p><p></p><p>In der Praxis werden z.B. <strong>Instanzen von Datenbankklassen</strong> als Referenz an Funktionen übergeben, somit wird sichergestellt, das die Verbindung nicht erneut aufgebaut wird und die Klasse vorige Anfragen weiterhin kennt. In einfachen Programmabläufen wird es mMn seltener verwendet, aber in der OOP sind Referenzen mitunter sehr nützlich, da Änderungen an Klassen-Variablen auch außerhalb der Funktionen gültig bleiben müssen. Hier ein kleines Beispiel einer Klasse "Party", nur um das mal grob zu veranschaulichen. Es wird eine neue Instanz der Klasse "Party" erstellt. Diese Instanz wird an eine Funktion übergeben, um die Party zu starten. Wäre die Übergabe an die Funktion nicht als Referenz erfolgt, wäre eine neue Instanz der Klasse "Party" angelegt worden und die Änderung in der Funktion, also dass die Party gestartet wird, würde nicht außerhalb der Funktion startePartyExtern() bekannt werden... (Hoffe, das verwirrt nicht mehr als es hilft, wenns zu verwirrend ist, einfach überlesen, hat auch nicht viel mit dem eigentlichen Problem zu tun, aber als kleine Veranschaulichung hoffentlich doch ganz gut...)</p><p></p><p>[php]<?php</p><p>class Party</p><p>{</p><p> var $anzahlPersonen = 10;</p><p> var $partyOrt = "bei mir";</p><p> var $partyStarted = false;</p><p> </p><p> function Party()</p><p> {</p><p> }</p><p>}</p><p></p><p>$bigParty = new Party();</p><p></p><p>function startePartyVonExtern(&$party)</p><p>{</p><p> $party->partyStarted = true;</p><p>}</p><p></p><p>startePartyVonExtern($bigParty);</p><p>?>[/php]</p><p></p><p>Schöne Grüße aus dem Sauerland!</p><p>Chriss</p><p></p><p>P.S.: Variablen werden mit dem Zuweisungsoperator definiert, also nichts anderes als:</p><p>[php]$var = 'Wert';[/php]</p><p>In deinem Fall also z.B.:</p><p>[php]$produkt = $summe = 0;[/php]</p><p>So wird (da von rechts nach links interpretiert wird) $summe der Wert 0 zugewiesen und anschließend $produkt der Wert von $summe, in dem Fall 0, zugewiesen und die Variablen sind definiert.</p></blockquote><p></p>
[QUOTE="Chriss1987, post: 1541373, member: 23088"] [b]AW: Verhalten bei Parameter-Übergabe[/b] Hallo, wenn man die Funktion vtauschen() mal betrachtet und im Hinterkopf behält, dass php Scripte Zeile für Zeile abarbeitet, würden die einzelnen Schritte so aussehen: [php]<?php $x = 10; $y = 15; 1. function vtauschen($a, $b) { 2. $temp = $a; 3. $a = $b; 4. $b = $temp; } vtauschen($x, $y); ?>[/php] 1. Schritt: Funktion wird aufgerufen, dabei werden die Variablen $a und $b mit den Werten, die übergeben wurden, initialisiert. Angenommen, wir rufen die Funktion mit vtauschen($x, $y) auf und haben zuvor $x mit 10 und $y mit 15 definiert, dann sind in Zeile 1 folgende Variablen mit folgenden Werten definiert: $a = 10 und $b = 15 2. Schritt: es wird eine lokale Hilfsvariable $temp definiert und mit dem Wert von $a vorbelegt. Folgende Variablen sind der Funktion mit folgenden Werten bekannt: $a = 10, $b = 15 und $temp = 10 3. Schritt: jetzt wird der Wert von $b auf $a kopiert, der vorige Wert von $a wird dabei überschrieben. Also sind der Funktion folgende Variablen und Werte bekannt: $a = 15, $b = 15 und $temp = 10 4. Schritt: hier wird deutlich, dass eine Hilfvariable notwendig ist, da nach dem vorigen Schritt beide Variablen den gleichen Wert haben. In diesem Schritt wird nun der zwischengespeicherte Wert von $a über die Hilfsvariable $temp auf $b kopiert, somit sind der Funktion folgende Variablen und Werte bekannt: $a = 15, $b = 10 und $temp = 10 Somit ist der Tausch vollzogen. Werde die Variablen als Referenz an die Funktion übergeben, ändert sich im Ablauf nichts, jedoch werden Änderungen, also Wertezuweisungen auf die übergebenen Variablen mit angewendet. Hier nochmal die Werte und Variablen der Schritte 1.-4., wenn die Variablen als Referenz übergeben werden (es wird zwischen lokal, also IN der Funktion und global, außerhalb der Funktion unterschieden: [code]1. Schritt: lokal: $a = 10 und $b = 15; global: $x = 10 und $y = 15 2. Schritt: lokal: $a = 10, $b = 15 und $temp = 10; global: $x = 10 und $y = 15 3. Schritt: lokal: $a = 15, $b = 15 und $temp = 10; global: $x = 15 und $y = 15 4. Schritt: lokal: $a = 15, $b = 10 und $temp = 10; global: $x = 15 und $y = 10[/code] In der Praxis werden z.B. [b]Instanzen von Datenbankklassen[/b] als Referenz an Funktionen übergeben, somit wird sichergestellt, das die Verbindung nicht erneut aufgebaut wird und die Klasse vorige Anfragen weiterhin kennt. In einfachen Programmabläufen wird es mMn seltener verwendet, aber in der OOP sind Referenzen mitunter sehr nützlich, da Änderungen an Klassen-Variablen auch außerhalb der Funktionen gültig bleiben müssen. Hier ein kleines Beispiel einer Klasse "Party", nur um das mal grob zu veranschaulichen. Es wird eine neue Instanz der Klasse "Party" erstellt. Diese Instanz wird an eine Funktion übergeben, um die Party zu starten. Wäre die Übergabe an die Funktion nicht als Referenz erfolgt, wäre eine neue Instanz der Klasse "Party" angelegt worden und die Änderung in der Funktion, also dass die Party gestartet wird, würde nicht außerhalb der Funktion startePartyExtern() bekannt werden... (Hoffe, das verwirrt nicht mehr als es hilft, wenns zu verwirrend ist, einfach überlesen, hat auch nicht viel mit dem eigentlichen Problem zu tun, aber als kleine Veranschaulichung hoffentlich doch ganz gut...) [php]<?php class Party { var $anzahlPersonen = 10; var $partyOrt = "bei mir"; var $partyStarted = false; function Party() { } } $bigParty = new Party(); function startePartyVonExtern(&$party) { $party->partyStarted = true; } startePartyVonExtern($bigParty); ?>[/php] Schöne Grüße aus dem Sauerland! Chriss P.S.: Variablen werden mit dem Zuweisungsoperator definiert, also nichts anderes als: [php]$var = 'Wert';[/php] In deinem Fall also z.B.: [php]$produkt = $summe = 0;[/php] So wird (da von rechts nach links interpretiert wird) $summe der Wert 0 zugewiesen und anschließend $produkt der Wert von $summe, in dem Fall 0, zugewiesen und die Variablen sind definiert. [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ★ = 12, ◇ = 4 und die Hälfte von ★ zu ◇ addiert wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Verhalten bei Parameter-Übergabe
Oben