そのやり方はXSSの元としか思えない。

[追記]XSSの元とは言えないかもしれません。コメント欄のNagiseさんのコメントも参照のこと[/追記]

オブジェクト指向を利用してエスケープを行う


一例としては、getterに細工をして、通常のgetterは常にエスケープした文字を返すようにしておきます。

僕の感性では、それこそ一人で開発するならいいけれど、そうでないならば機能しないやり方に思えます。人間を信用しすぎ。
getterがエスケープされた文字列を返すのかそうでないのか、誰がどうやって判断すればいいんでしょうか。ドキュメントとコードに食い違いがあったら?誰か歴代のメンテナンス担当者のうち一人の間抜けがいい加減な単体テストとおかしなエスケープ処理をしていたら?エスケープの意味を知らない間抜けな後任者がエスケープされない文字列を返すクラス書いたら?そのやり方だと最終的に全ソース見て確認しないと安心して使えないんじゃないのかな。
あと別な問題として、例えば(同じコントローラでGET引数などに応じて)HTMLじゃなくてJSONとしてデータ出力したいときはどうします?出力フォーマットごとにエスケープのやり方は違うわけですが対応するフォーマット毎にクラスを作りますか?すべてのgetterでフォーマット毎にメソッド生やしますか?すべてのgetXXXnonEscape()に対してそれぞれJSON用のエスケープをかけますか?
一例を、というならベストプラクティスを挙げていただいた方が世のため人のためだと思います。
僕の言うやり方は、どんな間抜けが関わろうが、safe以下を使う限り安全、不安なときにも見るべきところはunsafeを作る過程だけです。JSONで出力したい場合は、JSON出力用の関数orメソッドを呼ぶか、エスケープ関数を引数で渡して可変にできるようにするだけです。