- ベストアンサー
自作関数 require_onceを書く場所
関数を使い始めて間もないので、基本的な記述方法についてご教授願います。 以下のような書き方はしますか? //ファイル名Aには関数名A、ファイル名Bには関数名Bを記述 if(条件){ require_once("ファイル名A") $変数x = 関数名A(引数y) }else{ require_once("ファイル名B") $変数x = 関数名B(引数y) } もしくはこのように書くべきでしょうか? //ファイル名Cには関数名A、関数名Bを記述 require_once("ファイル名C") if(条件){ $変数x = 関数名A(引数y) }else{ $変数x = 関数名B(引数y) }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関数AとBの中身にもよるかと思います ただ、個人的には if文でrequireするしない などのロジックは書きません するのであれば //ファイル名Aには関数名A、ファイル名Bには関数名Bを記述 require_once("ファイル名A"); require_once("ファイル名B"); if(条件){ $変数x = 関数名A(引数y); }else{ $変数x = 関数名B(引数y); } ただ、このようにif文で振り分けるのであれば、 関数の内部でif文で 引数yの処理を振り分ければよいのでは? こうしますね
その他の回答 (2)
- みずの(@mizuno3)
- ベストアンサー率73% (192/263)
私は結構No.2さんと同じ意見です。 少ない資源(CPUやメモリ)の場合や、異常なほどアクセスが来るようなサイトでは極力サイズを小さくしたりします。 極限状態になると、とても大きな違いがあったりします。 資源が豊富であれば、ファイル管理がしやすい状態にした方がいいですね。 個人ではなくグループや社内で・・・となるとメンテナンス性を上げることに注力した方がいいと思います。 また、個人でも色々書き換えたり追加したりとする場合はメンテナンス性を上げておくことが大切だと思います。 関数Aと関数Bが同じ様な処理を行うのであれば、まとめてしまった方がいいと思いますし、別の処理であれば分けておくのがいいですね。 一般的には纏めるもしくはNo.1さんのような書き方だと思います。
お礼
>関数Aと関数Bが同じ様な処理を行うのであれば、まとめてしまった方がいいと思いますし、 >別の処理であれば分けておくのがいいですね。 ありがとうございます。 (現実に作っているモノでいいますと、関数Aと関数Bは全く違う処理です。) 参考にさせて頂きます。
個人的には、どっちでもいいような気がします。 元々、ライブリー化するのは、複数のスクリプトで使えるように、汎用性を求める事なので、ライブラリーに不必要な関数があってもおかしくはないと思います。 例えば、Fileという文字の読み込み、書き込み、削除が出来る外部ファイルを作ったとします。 ある時は、全部使うけど、今回のは削除関数はいらないや、って時もあると思います。 その場合、削除関数はいらない無駄な容量になり、そのファイルを開く時に、少しですが不可がかかったり、時間がかかります。 でも、一つのファイルにまとまっていれば、他のスクリプトで使い回していた時に、ファイルの管理は楽になります。 後でその外部ファイルを変えた時に、上書きするのは、一つだけになりますし。 最近は、サーバのスペックもあがり、さほどメモリーとかも気にしなくてもいいので、同じ分類の関数ならまとめる、って方向でいいと思いますよ。 ただし、私はメモリーや処理速度を優先させたいので、ファイルを別々に作った方が、好きです。 ファイルって開く時に、メモリーとか時間がかかりますし。 ただし、その際は、ファイルの管理が面倒になります。 書き込み専用ファイル、保存専用ファイル、削除専用ファイル、レス専用ファイルと分けていくと、読み込む時間やメモリーは少なくて済みますが、どれを、訂正したとか、上書き保存したのかとかが、分かりづらくなるし。 なので、一長一短あると思いますよ。 あとは、個人の趣味というか、センスというか、力量というか。 ・・・というのが私の見解ですが、他の方は別の意見があると思いますので、しばらく質問は締めないでくださいね。
お礼
>不必要な関数が…いらない無駄な容量になり…負荷がかかったり… >メモリーや処理速度を優先させたい >一長一短ある まさにその点を考え、質問しました。 ありがとうござます。 参考にさせて頂きたいと思います。
お礼
ありがとうございます。 >関数の内部でif文で すみません。 質問の意図と無関係と考え、単純な書き方をしました。 2つの処理をif文で分岐している、とお考えください。