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

dereferenzierung von objekten

noxTo

Mitglied
hi,

ich habe mich eben mal an die oop in php gesetzt mit einem buch.
unter dem angegebenen thema habe ich folgenen code
PHP:
<?php
echo '<html>';
echo '<body>';

class bruch
{
    private $zaehler;
    private $nenner;
    
    public function __construct($z, $n)
    {
        $this->zaehler = $z;
        $this->nenner = $n;
    }
    
    public function aus()
    {
        return $this->zaehler. ' / ' .$this->nenner;
    }
    
    public function mult($a)
    {
        $erg = new bruch(1,1);
        $erg->zaehler = $this->zaehler * $a->zaehler;
        $erg->nenner = $this->nenner * $a->nenner;
        return $erg;
    }
}

$x = new bruch(3,7);
$y = new bruch(4,5);

echo $x->aus(). ' * ' .$y->aus(). ' = ' .$x->mult($y)->aus();

echo '</body>';
echo '</html>';
?>

mein problem ist das ich einfach nicht raffe was die function mult macht.
also ich verstehe schon das sie bruch x mit dem bruch y multipliziert, aber nicht wie sie es genau macht.
die erklärung im buch ist sehr dünn.

kann mir das bitte jemand erklären "wo steckt was zu welchem zeitpunkt drin".

danke im voraus
mfg
 
Werbung:
Bezogen auf das konkrete Beispiel:

PHP:
public function mult($a)
{
    // $this ist $x, $a ist $y

    // Ergebnis wird als neues Objekt berechnet,
    // $x und $y werden nicht verändert
    $erg = new bruch(1,1);
            // (1,1) braucht es hier nur, weil der Konstruktor
            // Werte für Zähler und Nenner erwartet. Da die
            // ohnehin überschrieben werden, ist egal, was hier
            // steht.
    
    $erg->zaehler = $this->zaehler * $a->zaehler;
               // =       3        *     4
    
    $erg->nenner = $this->nenner * $a->nenner;
              // =       7       *      5
              
    return $erg;
}

Funktional identisch:

PHP:
public function mult($a)
{
    $zaehlerErg = $this->zaehler * $a->zaehler;
    $nennerErg  = $this->nenner  * $a->nenner;

    return new bruch($zaehlerErg,$nennerErg);
}
 
Zurück
Oben