スマートに項目をまとめてフロントが使いやすいように返却するにはどうしたら良いでしょうか?
サーバー処理で項目をまとめてフロントに返したいのですが、その際dtoのようなクラスを作成した場合
dto自体をreturnで返却してしまうとクラスそのものが返り値になってしまい困っています。
そもそもphpでdtoが一般的なのかも伺いたいです。
class dto_search_books { private $title; private $no;
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/27 08:55
回答2件
0
Webサーバからブラウザ(js)にAPI経由でデータを渡す場合、大抵jsonというフォーマットが使われます。昔はxmlが主流だったようです。
例えば、本のタイトルを検索するAPIを叩くとjsonで該当データの配列が返ってくるというAPIを作るとすると、こんな感じになります。(簡易版)
php
1// book.php?title=hoge 2 3if (!isset($_GET["title"]) || !is_string($_GET["title"])) { 4 http_response_code(400); 5 die("不正なリクエスト"); 6} 7 8$needle = $_GET["title"]; 9 10// $needleで検索するSQLを発行し結果を$booksに入れる 11 12$json = []; 13foreach ($books as $book) { 14 $json[] = [ 15 "id" => $book["id"], 16 "title" => $book["title"], 17 ]; 18} 19 20// jsonを返す 21header("Content-Type: application/json; charset=UTF-8"); 22$options = JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE; // お好みのオプション 23return json_encode($json, $options);
javascript
1var title = "hoge"; 2 3$.ajax({ 4 url: "book.php", 5 type: "get", 6 dataType: 'json', 7 data: { 8 title: title, 9 }, 10}) 11.done(function(json) { 12 console.log(json); 13}) 14.fail(function(xhr, status, error) { 15 console.log(xhr.status+" "+status+" "+error); 16});
投稿2017/02/27 09:17
編集2017/02/27 09:34総合スコア606
0
ベストアンサー
質問に付与するタグにCakePHP、FuelPHP、Laravelと入っていたので、そっち方面(フレームワーク)の回答です。
これらフレームワークを利用するのであれば、フレームワークでjsonで返すのに便利なようになっています。下記など参照ください。
CakePHP
FuelPHP
Laravel
(すいません、Laravelはあまり詳しくありません。)
phpでdtoについて
MVCフレームワークを使うのであれば、大雑把にいってモデルがdtoとdaoを兼ねるのかなと思います。明示的にDTOというクラスを作ってというのはフレームワークを使うのであればあまり無いかと思いますが、DTO的なものは形を変えて存在しているというようなイメージでしょうか。
投稿2017/03/26 16:42
総合スコア501
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/27 06:46
2017/03/28 15:07
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。