質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

2回答

8117閲覧

phpでのdtoについて

enigumalu

総合スコア192

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2017/02/27 07:36

編集2017/02/27 08:54

スマートに項目をまとめてフロントが使いやすいように返却するにはどうしたら良いでしょうか?
サーバー処理で項目をまとめてフロントに返したいのですが、その際dtoのようなクラスを作成した場合
dto自体をreturnで返却してしまうとクラスそのものが返り値になってしまい困っています。
そもそもphpでdtoが一般的なのかも伺いたいです。

class dto_search_books { private $title; private $no;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

natady

2017/02/27 08:12 編集

フロントというのはJavascriptを想定されていますか?
enigumalu

2017/02/27 08:55

JavaScriptを想定しています
guest

回答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
natady

総合スコア606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

enigumalu

2017/03/27 06:46

個人的にjson to jsonの受け渡しでいいと思っていますが、現行jsonとしてまとめて項目を返すのではなく それぞれの項目値を返却しているので途中から開発された部分だけjson形式はちょっと無理かな と思ってdtoを思いついたのですがphpでのdtoやbeanってあまり見ない気がしたので この状態からどうするのが望ましいのだろうという質問になります
guest

0

ベストアンサー

質問に付与するタグにCakePHP、FuelPHP、Laravelと入っていたので、そっち方面(フレームワーク)の回答です。

これらフレームワークを利用するのであれば、フレームワークでjsonで返すのに便利なようになっています。下記など参照ください。

CakePHP

FuelPHP

Laravel

(すいません、Laravelはあまり詳しくありません。)

phpでdtoについて

MVCフレームワークを使うのであれば、大雑把にいってモデルがdtoとdaoを兼ねるのかなと思います。明示的にDTOというクラスを作ってというのはフレームワークを使うのであればあまり無いかと思いますが、DTO的なものは形を変えて存在しているというようなイメージでしょうか。

投稿2017/03/26 16:42

amaranthine

総合スコア501

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

enigumalu

2017/03/27 06:46

Restfullな作りという感じでしょうか、現行jsonとしてまとめて項目を返すのではなく それぞれの項目値を返却しているので途中から開発された部分だけjson形式はちょっと無理かな と思ってdtoを思いついたのですがphpでのdtoやbeanってあまり見ない気がしたのと コントローラーで取得した項目をまとめて配列にして返すようになっているのですがあきらかに不自然な気がして この状態からどうするのが望ましいのだろうという質問になります
amaranthine

2017/03/28 15:07

なるほど。それでもあまりやることは変わらないかなという感じがします。json出力などの機能は使わずcontrolerから直接値を返す形かなと思います。(とはいえ、すでにあるシステムとの整合性なども考えるとそもそもフレームワークを利用するのかという話もありますね。。。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問