Wie kann ich sowas realisieren?
es sollte eine ausgabe wie diese sein:
echo $test()->test1()->test2()->test3();
eins davon sollte ein text beinhalten welches dann an die andere function übergeben wird. sollte für eine template-classe dienen
function()->function()
Versuchs mit

Code: Alles auswählen
echo $test->test1($test->test2($test->test3($test->test4('text'))));

Gruß
OnFire
Il y a plus des choses à changer dans l'avenir que dans le passé.
OnFire
Il y a plus des choses à changer dans l'avenir que dans le passé.
Nein soll es aber nicht.
Nehmen wir das als Beispiel (welches nicht funktioniert):
So ähnlich sollte es sein.
Das ist eine Variante die funktioniert, aber die ist mir zu lang und umständlich:
Nehmen wir das als Beispiel (welches nicht funktioniert):
Code: Alles auswählen
class css{
function b() { return '<b>'.$this.'</b>'; }
function i() { return '<i>'.$this.'</i>'; }
function txt($txt){ return $txt; }
}
$style = new css();
echo $style->i()->b()->txt('test');
Das ist eine Variante die funktioniert, aber die ist mir zu lang und umständlich:
Code: Alles auswählen
class css{
function css($txt) { $this->txt = $txt; }
function b() { $this->txt = '<b>'.$this->txt.'</b>'; }
function i() { $this->txt = '<i>'.$this->txt.'</i>'; }
function out() { return $this->txt; }
}
$style = new css('test');
$style->i();
$style->b();
echo $style->out();
Die erste Variante kann nicht funktionieren, weil du in den Methoden Strings zurückgibst und keine css-Objekte.
In Java funktioniert folgendes:
Ob das auch in PHP klappt, müsste man testen ( foo()['bar'] funktioniert beispielsweise in PHP nicht, obwohl es in Java möglich ist).
In Java funktioniert folgendes:
Code: Alles auswählen
class css{
function css($txt) { $this->txt = $txt; }
function b() { $this->txt = '<b>'.$this->txt.'</b>'; return this;} }
function i() { $this->txt = '<i>'.$this->txt.'</i>'; return this;} }
function out() { return $this->txt; }
}
echo new css('möp')->b()->i()->out();
KB:knigge
Großen Dank
so hat es funktioniert
genau das was ich wollte 
so hat es funktioniert
Code: Alles auswählen
class css{
function txt($txt) { $this->txt = $txt; return $this; }
function b() { $this->txt = '<b>'.$this->txt.'</b>'; return $this; }
function i() { $this->txt = '<i>'.$this->txt.'</i>'; return $this; }
function out() { return $this->txt; }
}
$style = new css();
echo $style->txt('text')->i()->b()->out();
