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

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

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

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

FuelPHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

3308閲覧

[FuelPHP]外部APIサービスにリクエストを送る時のパラメタの設定について

yoshiky

総合スコア105

PHP

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

FuelPHP

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2017/02/05 10:25

お世話になってます。
ある外部のサービスに、FuelPHPを使ってAPI経由で情報を取得したり、更新する処理を実装することになりましたが、
どのようにクラス設計をしたらいいか分からずに困っております。

取り急ぎ自分が考えた構成を下記に記します。主に使うのはcontrollerとapiとserviceです。

app/ ... ├── classes │   ├── controller │   │   ├── sample.php // apiを呼び出す処理を書く │   ├── model │   ├── api │   │   ├── base.php // 基底クラス。curlリクエストの実行やオプションの設定などの共有処理を書く │   │ ├── sample.php // コントローラが呼び出す │   └── service ├── update.php // api/sample.php が呼び出す、具体的な処理を実装する └── read.php ├── config ... └── views

PHP

1 2# かなり大まかな各クラスの主な処理 3 4Class Controller_Sample extends Controller { 5 6 $return = Api_Sample::method($params) // 何らかのパラメータを$paramsとして渡し、結果を受け取る 7 8} 9 10 11Class Api_Sample($params) { 12 13 $return = Service_Read::method($params); // Serviceの呼び出し(わざわざServiceを挟む必要性も無い気がしますが。。) 14} 15 16 17Class Service_Read($params) { 18 19 $return = Api_Base::execute($params) // Apiを実行し外部サービスにリエクストを送って、レスポンスを得る 20 21} 22

どういう構成にしたら良いか、具体的に分からない点は、
外部サービスが提供しているAPIを利用する場合、リクエストにパラメタをセットすると思います。
(例えば識別IDや契約ID,ユーザIDなど)。これらはconfigに定義してConfig::getなどで読み込めばいいと思いますが、読み込んだ値はどこでセットするのがいいでしょうか。

パラメタの数が70項目近くあるため、専用クラスを作った方がいいと思いますが、そのクラスの使い方が分からず、、
単純にclassesの下にformディレクトリを設け、その中に処理単位のクラスを作ってsetter/getterを定義して、api/sampleクラスからnewで呼び出すだけでいいのでしょうか。

大雑把で分かりにくいと思いますが、何かしらでもアドバイスいただけると助かります。
不明点があれば追記します。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ディレクトリ構造的にふと疑問に思えたので、
FuelPHP 自作クラスを呼び出すとかのメモ - Qiita
FuelPHP で自作関数みたいなファイルはどこに置いたら良いか - Qiita
とか参考になりますでしょうか。

MVCモデルと関係ないクラス設計の場合、
Moduleとして置いちゃったほうがいいような気もするけど、
どっちでもできちゃうので「お好み」でどうぞ。

パラメータが70近くあるってのは不毛ですね、
必要に応じて階層化した連想配列で与えるとか、
目的に応じてパラメータを分類して、
小分けした分類ごとにパラメータを引き渡すとか、
きれいな実装ができるといいですね。

投稿2017/02/09 09:30

編集2017/02/09 09:34
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yoshiky

2017/02/10 05:24

返信が遅くなり失礼しました。 ご回答ありがとうございます。リンク先の記事を見ました。参考にさせていただきます。 70項目のリクエストパラメタは例として悪かったかもですが(実際にあるのですが。。)、パラメタセット自体はよくある処理なので、集合知としてどこかにないかなと探しましたが、ないですね。。 取り急ぎ classes/api/sample.php にリクエスト/レスポンスパラメタを定数で定義して、配列のvalueとして扱うことにしました。 後でリファクタリングするかもですが。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問