teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Q&A

解決済

3回答

3334閲覧

PHPでライブラリを作る時のディレクトリ構成のベストプラクティス

fumito_94

総合スコア679

PHP

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

0グッド

3クリップ

投稿2019/05/30 16:37

0

3

前提・実現したいこと

phpで、GoogleAPIなどの外部APIを使う用のライブラリを作ってみたいと思っています。
そこで、ライブラリなどはどのようなディレクトリ構成にするのが一般的なのでしょうか?
ライブラリの役割としては、アプリケーションからのデータをAPIに送信し、受信した値を変換してアプリケーションに返すということをしたいです。
また、APIトークンなどの設定もどこにすればいいのでしょうか?

試したこと

Carbonなどのディレクトリ構成は確認したのですが、これが良さそう!というのが思いつきませんでした。

よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

composer対応してPSR-4に準拠すればディレクトリ構成は自動的に決まる。
いくつかcomposerパッケージ見ればすぐに分かる。
規約なので良いも悪いもない。

そんなことよりも名前空間が大事。

Carbonはこうだけど

"autoload": { "psr-4": { "Carbon\": "src/Carbon/" } },

今からなら最上位にベンダー名入れた名前空間にしたほうがいい。

"autoload": { "psr-4": { "(他と被らない自分のベンダー名)\(パッケージ名)\": "src/" } },

先にGitHubとpackagistのアカウント作ってそのIDをベンダー名にする。
CarbonならnesbotがpackagistのID。こうやって使われるので重要。

composer require nesbot/carbon

ユーザー視点ではpackagistのIDと名前空間しか見ない。
use (他と被らない自分のベンダー名)(パッケージ名)\Foo;
src以下は当然PSR-4としか思ってない。

投稿2019/05/31 01:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

fumito_94

2019/05/31 01:48

とてもわかりやすかったです!参考にさせていただきます!
guest

0

ライブラリ管理という視点ではこれから作るPHPのアプリケーションであればcomposerで外部ライブラリを管理するのがベストプラクティスと言える状態になっています。

そのため、ライブラリ開発にあたってもcomposerに寄せると良いんではないかなと思っています。

ライブラリなどはどのようなディレクトリ構成にするのが一般的なのでしょうか?

どうやって配布/使用するかにもよりますが、ライブラリ全体としては

  • composerで管理するようにする composer 自作ライブラリあたりで検索
  • そこまでやらなくても、composerでautoload出来るようにする 参考

として、ディレクトリ構成はよく使われている構成に近いものにすると、ディレクトリの役割の共通認識が作りやすいです。

APIトークン等の使用する環境固有の情報はライブラリの本体には含ませず、
ライブラリを使用するアプリケーションの環境情報を管理するファイルで管理して、
アプリケーションがそのライブラリのコンストラクタに与える形にするのが良いかなと思います。

投稿2019/05/31 01:50

tanat

総合スコア18778

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

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

fumito_94

2019/05/31 01:51

なるほど!とても勉強になります。 ご丁寧にありがとうございます…!
guest

0

ディレクトリ構成のベストプラクティス

ないです。要件次第となります。
どういうAPIなのか、どういう機能を提供しているのか。
結局のところURLが叩かれて実行されるものとなりますので、
通常のWebサイトを作るときと考え方はあまり変わらないと思います。
強いてならAjaxでPHP実行するときのことを考えると良いのでは。
設定ファイルはURLでアクセスできる場所には置かないとか、そういった配慮は必要ですし、
フレームワークを利用するのであればフレームワークのルールに従うことになります。

投稿2019/05/31 00:21

m.ts10806

総合スコア80888

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

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

fumito_94

2019/05/31 01:48

回答していただきありがとうございます!Ajaxなども考えていきます…!
m.ts10806

2019/05/31 01:53 編集

Ajaxの件はあくまで「Ajaxで呼び出されるプログラムって概念はAPIだよね」という例で書いています。 パラメータを渡して所定の処理を行って結果を返すわけですから。
fumito_94

2019/05/31 01:53

とても勉強になります。 本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問