jopjip
Ensign
- Registriert
- Juni 2008
- Beiträge
- 233
Hi,
ich habe eine Frage zur Kombination verschiederner Methoden einer Klasse. Wie kann ich zwei Methoden einer Klasse möglichst elegant auf ein Objekt anwenden?
Der folgende Code, bewirkt, dass das Objekt in die Tags <i></i> oder <b></b> geschrieben wird. Wie erreiche ich eine Kombination oder beiden Methoden, sodass am Ende folgendes rauskommt:
Der Code unten bewirkt, was ich eben beschrieben habe, allerdings muss ein Umweg über ein zweites Objekt gegangen werden.
Geht das auch eleganter?
Hier erstmal der Code:
Das Skript gibt folgende Ausgabe: Ein Text
Wie gesagt, dieser Weg umschließt einen Umweg und der folgende Code bewirkt eine Fehlermeldung:
Also wie wird es richtig gemacht? Ich hoffe ihr konntet verstehen, was ich meine.
Grüße
ich habe eine Frage zur Kombination verschiederner Methoden einer Klasse. Wie kann ich zwei Methoden einer Klasse möglichst elegant auf ein Objekt anwenden?
Der folgende Code, bewirkt, dass das Objekt in die Tags <i></i> oder <b></b> geschrieben wird. Wie erreiche ich eine Kombination oder beiden Methoden, sodass am Ende folgendes rauskommt:
HTML:
<i><b>Ein Text</b></i>
Der Code unten bewirkt, was ich eben beschrieben habe, allerdings muss ein Umweg über ein zweites Objekt gegangen werden.
Geht das auch eleganter?
Hier erstmal der Code:
PHP:
class mache_kursiv
{
public $text;
protected $kursiv = "<i>@</i>";
public function __construct($text)
{
$this->text = $text;
}
public function kursiv()
{
return str_replace("@", $this->text, $this->kursiv);
}
}
class mache_fett extends mache_kursiv
{
protected $fett = "<b>@</b>";
public function __construct($text)
{
parent::__construct($text);
}
public function fett()
{
return str_replace("@", $this->text, $this->fett);
}
}
//1. Objekt wird fett geschrieben
$object = new mache_fett("Ein Text");
$text = $object->kursiv();
//2. Objekt das fettgeschriebene wird noch kursiv geschrieben
$object2 = new mache_fett($text);
echo $object2->fett();
Das Skript gibt folgende Ausgabe: Ein Text
Wie gesagt, dieser Weg umschließt einen Umweg und der folgende Code bewirkt eine Fehlermeldung:
PHP:
$object->kursiv()->fett();
Grüße