KB)本連載では軽量PHPフレームワークであるSlimを紹介していきます。フレームワークといえば、重厚長大なもの、いわゆるフルスタックフレームワークが多い中で、あえて軽量フレームワークを取り上げます。軽量ゆえのメリットを味わっていただこうと思います。前回は、さまざまなルーティング登録の方法を紹介しました。今回は、もっとちゃんとしたHTML画面をSlimで表示させるにはどうすればいいのかを扱います。それは、テンプレートエンジンTwigと連携させることによって実現するので、その方法とTwigの使い方を紹介していきます。ループまとめSlimにおけるビューの扱いLaravelやCakePHPといったフルスタックフレームワークは、MVCの考え方を取り入れています。MVCのV、つまり、ビュー層の機能を内包しています。Slimはルーティングに重点を置いた軽量フレームワークなので、ビュー層は含まれていません。Slimの公式ドキュメントには以下の記述があります。response.Slimでは、適切なPSR7のResponseオブジェクトを生成し、リターンすることにのみ責任を持つように作られています。このことは、HTTPのレスポンスとして必ずHTMLを返さなければならない、といった束縛から自由になることを意味し、さまざまなWebアプリケーションの形態に柔軟に対応できるフレームワークであることを示しています。SlimでJSONデータを送信する方法Slimのレスポンスの柔軟さを表す一例を紹介しましょう。Webアプリケーションのフロントエンドをシングルページアプリケーションとし、そのサーバサイドを全てAPI化したものを考えます。その場合のサーバサイドとしては、JSONオブジェクトをHTTPレスポンスとして送信するのが通常です。Slimはそういったアプリケーションにも対応しています。リスト1のコードになります。リスト1を記述するroutes4.phpは、今回新たに作成するルーティング登録用ファイルです。(3)});リスト1のポイントは(3)の行です。ルーティングコールバック関数の第2引数はPSR7のResponseオブジェクトです。このResponseオブジェクトのwithJson()メソッドを実行することでJSONデータを内包したResponseオブジェクトを生成します。その際、引数として、JSONデータの元となる連想配列を渡します。リスト1では$jsonArrayが該当し、その$jsonArrayをあらかじめ生成しているのが(2)です。ここでは、前回の復習も兼ねてルーティングプレースホルダを使って、それを(1)で$idとして受け取り、(2)の$jsonArrayに埋め込んでいます。実際には、例えば、$idを使ってDBからデータを取得し、その結果配列をJSONデータとする、といった処理を記述します。して生成されたResponseオブジェクトをルーティングコールバック関数の戻り値としてリターンすることで、JSONデータがHTTPレスポンスとして送信されます。構文としては以下のようになります。Response{JSONデータの元となるPHP連想配列を生成。$response->withJson(生成されたPHP連想配列);}では、実際にリスト1を動作させてみましょう。index.phpに、リスト1のファイルを読み込むコードとしてリスト2の太字の1行を追記します。[リスト2]firstslim/src/public/index.php<?php〜省略〜require_once("../routes4.php");$app->run();この辺りは、前回の復習です。コードが記述できたら、以下のURLにアクセスしてください。http://localhost/firstslim/src/public/no4/getDataByJSON/54図1の画面が表示されれば成功です。図1:リスト2の処理結果として表示されたJSON[Note]ChromeのJSON整形用プラグイン図1では整形された状態でJSONデータがブラウザに表示されています。Formatterを使って整形表示させているからです。このようなプラグインをインストールしていない場合は、以下の表示になります。{"id":"54","name":"\u7530\u4e2d\u548c\u5f66","age":26}JSONデータを確認するには、このようなプラグインは必須です。前回のNoteで紹介したPostmanを利用するのも一手です。その場合は、JSONデータは自動で整形表示してくれます。