質問: new View(); $view->header(); $view->body(); ``` このようにするのではなく、zend\-diactorosのようにストリームに蓄えて、レスポンスを返す時にまとめてストリームの中身をechoする形がよいと思いました。 下記のgetBodyで得られるものは、バッファのようなものと思っています。 ``` $response->getBody()->write("Hello world!"); ``` 私がこのようにするといいと思う理由は、下記のとおりです。 * echoするタイミングが1つにまとめる。 * レスポンスの出力内容をテストしやすい。 これ以外に具体的なことが思いつきませんでした。また、echoを直接使うと良くない理由は、上記のことが難しくなるからです。 他にもechoを使うと良くない具体的な理由を教えていただけると助かります。 また、下記の記事のコメントにある次のアンチパターンの理由も知りたいです。 モダンPHPアンチパターン \- Qiita > > PHP標準のテンプレート機能を利用する場合に... > > echo短縮構文を利用しない > > 制御構造の別構文を利用しない > > > echo短縮文は`= ?>`、制御構造の別構文は` endif; ?>`と思っています。 こちらについては、良くない理由が浮かびませんでした。下記のSlateというテンプレートエンジンのドキュメントに、ガイドとして上記のことが推奨されていました。 Syntax \- Plates
回答: ###### echoを直接使うと良くない理由 * 変数のサニタイズの網羅性を担保できない ###### echo短縮構文を利用しない * ASP.NET と混在した場合に勘違いしやすく紛らわしい * 設定によってオンオフが切り替わる構文を使用するのは望ましくない ###### 制御構造の別構文を利用しない * ネスト構造がわかりにくくなる * IDEでネスト構造が検出できない