• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Übergabeparameter !

skype90

Mitglied
Hallo ich habe eine Frage :

Wozu dienen Übergabeparameter einer Funktion und hätte vllt. irgendeiner ein verstädliches Beispiel für mich,danke

Mfg
skype90
 
Werbung:
Hier ist ein Beispiel :

PHP:
 <?php

    # Diese Funktion rechnet den Prozentwert von der
    # angegebenen Zahl aus
    function meineformel($zahl, $prozent)
        {
        if ($zahl != 0)            # Wenn $zahl nicht 0 ist, dann ...
            {
            $ergebnis = ($zahl / 100) * $prozent;
            return $ergebnis;
            }
        }

    echo "45 % von 100 sind = " . meineformel(100,45) . "<br>";
    echo "60 % von 100 sind = " . meineformel(100,60) . "<br>";
?>


Meine frage ist warum kann ich die Varriablen $zahl,$prozent als Übergabewerte nicht auslassen und muss sie in den Übergabeparameter definieren ?
 
Werbung:
Was soll denn die Funktion machen wenn du die Funktion leer aufrufst? Woher soll die wissen welche beiden Zahlen miteinander verrechnet werden sollen? Die Funktion muss doch wissen, mit welchen Werten sie arbeiten muss?

MfG Icy
 
Funktionen werden oft mit einem Übergabeparameter definiert, da die Funktion variabel sein soll.
Eine stupide Funktion könnte nur so etwas

PHP:
<?php
function addiere() {
  $zahl1 = 5;
  $zahl2 = 3;

  echo $zahl1 + $zahl2;
}

addiere();
addiere();

?>

Was ist nun wenn du die Funktion aber nicht mit 3 und 5 rechnen willst? Sondern du willst beliebige Zahlen nehmen können.
Und was ist, wenn du mehrere Rechnungen durchführen willst?

Dafür brauchst du dann auf ejden Fall eine Funktion mit übergabeparameter.
Richten wir uns die addieren funktion mal mit Übergabeparametern ein.

PHP:
function addiere($zahl1, $zahl2) {
  echo $zahl1 + $zahl2;
}

addiere(5,3);
addiere(6,4);

Der unterschied ist nun, dass die zahlen ausserhalb angegeben werden.
Du darfst dir vorstellen das intern folgendes passiert bei addiere(6,4);

PHP:
$zahl1 = 6;
$zahl2 = 4;

echo $zahl1 + $zahl2;

Heisst Übergabeparameter liefern dir dynamik in einen sonst runter geschriebenen Quelltext.
Hoffe es ist einigermaßen klar geworden :)
 
Werbung:
Hallo,
Gilles hat schon Recht. Es ist auch recht einfach erklärt worden. Aber es ist laut meiner Ansicht noch nicht ganz korrekt.
1. Ihr vergesst alle, dass es augenscheinlich keine function für ein Objekt werden soll, also sollte man die function auch statisch machen.
2. Die nächste Überlegenung wäre ob du auf die function auch außerhalb der Klasse zugreifen willst/musst, d. h. private oder public. Private heißt, man kann nur innerhalb der Klasse auf die Methode (=Funktion) zugreifen. Und mit public nicht nur innerhalb, sondern auch außerhalb. Wenn du keine Klasse verwendest, ist das natürlich überflüssig.
3. Du brauchst dir auch keine Sorgen zu machen, in PHP sehen sich statische und nicht statische Methoden. Das heißt Du kannst statisch und nicht statisch in PHP mischen wie du willst.
4. Ich würde in einer solchen Methode selber nichts ausgeben, stattdessen es lieber mit der Anweisung return zurückgeben. Achtung: Mit der Anweisung return gibst du nicht nur etwas zurück, sondern du verlässt auch augenblicklich die Methode.

Aus den genannten Gründen würde meine Methode wie folgt aussehen:
PHP:
// für Klassenlose function:
static function addiere ($zahl1, $zahl2)
{
  $ergebnis = $zahl1 + $zahl2;
  return $ergebnis;
}

// zurückgegebenen Wert in eine Variable speichern:
$ergebnis_func = addiere(1, 5);
echo($ergebnis_func);

// ohne abspeichern:
echo(addiere(1,5));

// für eine function innerhalb einer Klasse:
class meineklasse
{
  // für Aufruf NUR innerhalb der Klasse:
  private static addiere ($zahl1, $zahl2)
  {
    $ergebnis = $zahl1 + $zahl2;
    return $ergebnis;
  }

  echo(meineklasse::addiere(1,5));
  // statische functions einer Klasse werden immer mit :: aufgerufen
}

Ich hoffe ich habe dich damit nicht überfordert und ich konnte mein Anliegen verständlich herüberbringen.


MFG derwunner
 
Hallo,
1. Ihr vergesst alle, dass es augenscheinlich keine function für ein Objekt werden soll, also sollte man die function auch statisch machen.
2. Die nächste Überlegenung wäre ob du auf die function auch außerhalb der Klasse zugreifen willst/musst, d. h. private oder public. Private heißt, man kann nur innerhalb der Klasse auf die Methode (=Funktion) zugreifen. Und mit public nicht nur innerhalb, sondern auch außerhalb. Wenn du keine Klasse verwendest, ist das natürlich überflüssig.
3. Du brauchst dir auch keine Sorgen zu machen, in PHP sehen sich statische und nicht statische Methoden. Das heißt Du kannst statisch und nicht statisch in PHP mischen wie du willst.
4. Ich würde in einer solchen Methode selber nichts ausgeben, stattdessen es lieber mit der Anweisung return zurückgeben. Achtung: Mit der Anweisung return gibst du nicht nur etwas zurück, sondern du verlässt auch augenblicklich die Methode.

Man weiß nur nicht, ob Anfänger nun auch sofort mit Klassen in PHP arbeiten würden oder nicht. Denn strukturiertes Programmieren heißt ja nicht gleichzeitig OOP. :) Meistens fängt man ja an strukturierte Programmierung zu lernen und macht dann erst weiter mit Klassen :)

Was den return-Wert angeht, so wollte ich erst mal Grundsätzlich erst einmal zeigen, wie Parameter in Funktionen eingesetzt werden, aber deine Ergänzung dazu ist schon richtig ^^

in PHP reicht es in der strukturierten Programmierung die Funktionen als function auszuzeichnen ohne die Sichtbarkeit zu definieren.
 
@derwunner:

Was crash im anderen Thread zu include-Statements aus der Doku zitierte, gilt übrigens auch für Statements wie echo und print: Es handelt sich um Sprachkonstrukte, nicht um Funktionen. Runde Klammern sind deshalb dort überflüssig und völlig unüblich.

Abgesehen davon funktioniert dein Code-Beispiel vorne und hinten nicht.

Du kannst keine Funktionen im globalen Namensraum explizit als statisch deklarieren. (Wozu auch?)

Auch das hier ist syntaktisch falsch:

PHP:
// für eine function innerhalb einer Klasse:
class meineklasse
{
  // für Aufruf NUR innerhalb der Klasse:
  private static addiere ($zahl1, $zahl2)
  {
    $ergebnis = $zahl1 + $zahl2;
    return $ergebnis;
  }

  echo(meineklasse::addiere(1,5));
  // statische functions einer Klasse werden immer mit :: aufgerufen
}

Wenn überhaupt, dann so:

PHP:
// für eine function innerhalb einer Klasse:
class meineklasse
{
  // für Aufruf NUR innerhalb der Klasse:
  public static function addiere ($zahl1, $zahl2)
  {
    $ergebnis = $zahl1 + $zahl2;
    return $ergebnis;
  }
}

// statische functions einer Klasse werden immer mit :: aufgerufen
echo meineklasse::addiere(1,5);
 
Werbung:
Zurück
Oben