Rudi: Parameterübernahme in objektor. Funktion in PHP

Hi,
traditionell läuft die Parameterübergabe in etwa so.

Funktionsaufruf:
meineFunktion($parm1, $parm2...)

Funktion:
function meineFunktion($param1, $param2...)

if ($param1 == $wert) {
$neuer Wert = $param2 * $irgendwas;
}

Wie kann die Funktion in objektorientierter Darstellung aussehen?

Könnte ich z.B. wenn $param1 eine Fontbezeichnung enthält, dies wie folgt zuweisen?

$pdf->SetFont($param1, '', 10);

  1. Hallo Rudi,

    nicht, dass ich die Zielrichtung deiner Frage verstünde… Ich vermute, dass hinter Deiner Frage ein Hintergrund steht, den Du nicht beschreibst.

    Ein PHP-Objekt ist - stumpf gesagt - eine Sammlung von Eigenschaften und Methoden. Welche das sind, legt die Klassendefinition fest.

    Wenn Du ein Objekt neu erzeugst (mit dem new Operator), erzeugst Du einen neuen Satz dieser Eigenschaften, und verbindest damit die Methoden (=Funktionen), die in der Klassendefinition angegeben sind. Die Eigenschaften sind sozusagen Variablen, die nur für dieses Objekt gelten. Erzeugst Du drei Objekte zur gleichen Klasse, hat jedes Objekt seinen eigenen Satz dieser Eigenschaften.

    Wenn eine solche Methode aufgerufen wird - wie z.B. dein $pdf->SetFont - dann kann der Code in der Methode über die Pseudovariable $this auf das Objekt zugreifen, für das die Methode aufgerufen wurde, und damit auch in den Eigenschaften dieses Objekts Werte speichern und sie wieder lesen.

    Wenn Du ein "fertiges" Objekt aus einer Bibliothek hast - was ich bei Dir stark vermute - dann hängt es von der Bibliothek ab, was damit geht und was nicht. Dazu musst Du die Dokumentation der Bibliothek lesen. Ohne Nennung der Bibliothek kann Dir hier niemand sagen, was geht und was nicht.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hi there,

      Wenn Du ein "fertiges" Objekt aus einer Bibliothek hast - was ich bei Dir stark vermute - dann hängt es von der Bibliothek ab, was damit geht und was nicht. Dazu musst Du die Dokumentation der Bibliothek lesen. Ohne Nennung der Bibliothek kann Dir hier niemand sagen, was geht und was nicht.

      Doch. Sein Beispiel verweist eindeutig auf die fpdf-Lib, mit der man aus PHP heraus PDF-Dokumente erstellen kann. Eine Dokumentation dazu gibts hier...

      1. Hallo klawischnigg,

        ok, danke.

        Gunnar hat offenbar wirklich recht...

        Sein Beispiel verweist eindeutig auf die fpdf-Lib

        fpdf kenne ich nicht, der Titel des Threads klingt nach einer generischen Frage über OOP - und die Erwähnung von "ich hab da eine Lib namens fpdf und würde gern wissen..." wäre der Hintergrund gewesen, den ich erwähnte und der nicht geliefert wurde.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo Rolf

          fpdf kenne ich nicht, der Titel des Threads klingt nach einer generischen Frage über OOP - und die Erwähnung von "ich hab da eine Lib namens fpdf und würde gern wissen..." wäre der Hintergrund gewesen, den ich erwähnte und der nicht geliefert wurde.

          Da ich nicht wusste, dass die Antwort abhängig ist von dem Objekt, habe ich nicht konkret fragen können. Zufällig bin ich auf das PDF-Objekt gestoßen.
          Was hinter meiner Frage steckte:
          Nehmen wir das Beispiel:
          <?php
          $meinAuto->fahren(10);
          ?>

          Könnte ich hier eine Funktion definieren

          <?php
          function auto($v) {
          $meinAuto->fahren($v);
          }
          ?>

          und aus meiner php-Datei aufrufen mit auto('10');

          1. Hallo Rudi,

            ja, das ist so. Methoden sind Funktionen, die im Kontext eines Objekts ausgeführt werden. Wenn Du also ein "Gewehr" und ein "Salat" Objekt hast, dann sind $gewehr->schießen() und $salat->schießen() zwei unterschiedliche Funktionen, die in unterschiedlichen Kontexten laufen und ganz unterschiedliche Dinge tun.

            Du solltest den entsprechenden Bereich im PHP Handbuch - hier - konzentriert durcharbeiten, zumindest die Abschnitte 1-5 und 7.

            Wenn Du eine eigene Funktion schreibst, die eine Methode in einem Objekt aufrufen soll,

            function auto($v) {
               $meinAuto->fahren($v);
            }
            
            auto(10);
            

            Dann wird der Wert 10 als Parameter bei der fahren Methode landen, das ist okay.

            Du musst dann nur das Problem lösen, dass in der Funktion auto die Variable $meinAuto nicht bekannt ist, aber das ist ein anderes Thema.

            Rolf

            --
            sumpsi - posui - obstruxi