Sven Rautenberg: eigene Klassen: __toString() oder getHtml()?

Beitrag lesen

Moin!

Meine Frage lautet jetzt ob es sinnvoll wäre dafür die __toString()-Funktion zu benutzen oder besser eine "eigene" Funktion, z.B. getHtml() zu schreiben.

Unabhängig davon, ob irgendwas anderes darauf Einfluss hat, denke ich natürlich sofort in Richtung des kontextgerechten Escapings.

Das heißt: Man will wissen, ob man es bei einem String (und die Stringrepräsentation einer Klasse ist dasselbe) mit HTML-Text oder Plain-Text zu tun hat. Keinesfalls will man in dieser Frage Unklarheiten und Mischformen.

Deshalb plädiere ich ganz klar für getHtml() - nichts kommuniziert so deutlich, dass die Rückgabe HTML enthält, welches dann hoffentlich korrekt escaped wurde, sofern nötig. Insbesondere kommuniziert es, dass man es seinerseits NICHT nochmal für HTML escapen darf, und dass es für andere Kontexte nicht unbehandelt geeignet sein könnte.

getHtml() lässt außerdem Platz für getPlaintext(), und die Methode __toString() kann ggf. zum Debugging verwendet werden, wenn man mal ein solches Objekt als Log-Text mit ausgeben muss. Ich würde __toString() nur zurückhaltend als nutzbringende Printfunktion einsetzen. Im Zweifel kann man alle Objekte, die getHtml() kennen, in ein Decorator-Objekt einkapseln, welches auf __toString() hin intern getHtml() zurückgibt.

- Sven Rautenberg