9.1.4 Demo-Programm

Das folgende Beispielprogramm soll die 2 Möglichkeiten der Parameterübergabe demonstrieren:

Datei pParameterTesten.php
<!doctype html> <!-- Programm "pParameterTesten.php" --> <html> <head> <meta charset="iso-8859-1" /> <meta name="author" content="Beringer Alfred" /> <meta name="description" content="Programmieren mit PHP 5" /> <title>Demo Parameterübergabe</title> </head> <body> <pre>
<?php $a = 4; $b = 5; $c = 6; $pers1 = new Person(); $pers1->setName("Hugo1"); $pers2 = new Person(); $pers2->setName("Hugo2"); testen($a, $b, $c, $pers1, $pers2); print("<p></p><hr /><p></p>"); print("<p>Ausserhalb: \$a = $a, \$b = $b, \$c = $c</p>"); // Ausgabe: $a=4, $b=12, $c=22 print("<p>Ausserhalb: \$pers1 = " . $pers1->getName() . "</p>"); // Name: Maxi1 print("<p>Ausserhalb: \$pers2 = " . $pers2->getName() . "</p>"); // Name: NeuerName2 // ***************************************************************************** class Person { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } // ----------------------------------------------------------------------------- function testen($x, &$y, &$z, Person $p1, Person &$p2) { $y = 3 * $x; // $y ist ein Ausgangsparameter $z = $x + $y + $z; // $z ist ein Durchgangsparameter $x = 77; /* $x ist ein Eingangsparameter (Wertübergabe!), diese Zuweisung ist außerhalb der Funktion wirkungslos! */ print("<p>In Funktion: \$x = $x, \$y = $y, \$z = $z</p>"); // Ausgabe: $x=77, $y=12, $z=22 // Die folgenden beiden Methodenaufrufe ändern den Namen der Originalobjekte außerhalb der Funktion! $p1->setName("Maxi1"); // $p1 ... Wertübergabe einer Referenz $p2->setName("Maxi2"); // $p2 ... Referenzübergabe einer Referenz print("<p>In Funktion: \$p1 = " . $p1->getName() . "</p>"); // Name: Maxi1 print("<p>In Funktion: \$p2 = " . $p2->getName() . "</p>"); // Name: Maxi2 $p1 = new Person(); /* Diese Zuweisung ist außerhalb der Funktion wirkungslos! Das Originalobjekt "Hugo1" bzw. "Maxi1" bleibt bestehen. */ $p1->setName("NeuerName1"); $p2 = new Person(); // Damit verschwindet das Originalobjekt "Hugo2" bzw. "Maxi2"! $p2->setName("NeuerName2"); print("<p>In Funktion: \$p1 = " . $p1->getName() . "</p>"); // Name: NeuerName1 print("<p>In Funktion: \$p2 = " . $p2->getName() . "</p>"); // Name: NeuerName2 } // ***************************************************************************** ?>
</pre> <p> </p><hr /><p> </p> <footer> <address id="ende"> Copyright &#169; 2009<br /> Letzte Aktualisierung: 2013-10-30<br /> Beringer Alfred<br /> Wögerer Wolfgang </address> </footer> </body> </html>



Weiter zu
Kapitel 14.2 - Beispiel mit Datenerfassung (Dateien, objektorientiert)
Kapitel 15.1.1 - SQL-Skript
Kapitel 15.2 - Einführende Beispiele (Datenbanken, prozedural)
Kapitel 15.3 - Beispiel mit Datenerfassung (Datenbanken, objektorientiert)
Kapitel 16.1.2 - Projektpfad - Include-Datei "projektpfad.inc.php"
Zurück
zum Anfang dieses Kapitels
zu Kapitel 3.2.1.2 - Programm 1 (prozedural)
zu Kapitel 3.2.2.2 - Programm 2 (prozedural)
zu Kapitel 3.2.3.2 - Programm 3 (prozedural)
zu Kapitel 4.2.1.2 - Programm 1 (objektorientiert)
zu Kapitel 4.2.2.2 - Programm 2 (objektorientiert)
zu Kapitel 4.2.3.2 - Programm 3 (objektorientiert)
zu Kapitel 8.7.1 - Demo-Programm (Werte- und Referenztypen)
zum Inhaltsverzeichnis