• ベストアンサー

共通で使う配列について

外部ファイル(複数のページからインクルードされる)に、 配列を定義するのって普通なのでしょうか。 例えば、曜日関係の処理をする場合、 $days = Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); と言う配列を用意すれば、曜日の一覧を表示することも、 番号に対応する曜日名を取得することもできます。 でも、定数でもないのに、別のファイルで定義された変数を使うのって何だか違和感があります・・・。 (配列が定数として使えれば一番良いんですが) そこで、「曜日の配列を返す関数」を用意すると言う方法(下記参照)も考えました。 function get_days(){ return Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); } // 特定の曜日名を取得する場合 $days = get_days(); print $days[$number]; 結局やっていることは同じなのですが、関数を呼び出す手間がかかってしまうのもどうなんだろう・・・と思ってしまいます。 みなさんはこのような場合、どういった方法を使っていますか? また、この2つならどちらの方が分かりやすいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

通常includeする場合は競合をさけるためにclass化しておくものじゃないですか? であれば配列は関数から受け取るのが妥当でしょう・・。 include "common.php"; $common=new common; $days=$common->get_days(); //common.php class common{ function get_days(){ return Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); } } みたいなかんじ・・・

neunter
質問者

お礼

回答ありがとうございます。 配列は定数にできないので、共通の変数にすると好きなように変更できてしまう点が気になっていたのですが、 (同じ名前で違う配列を作ってしまっても分からないですし…) classの中でprivateな配列を作っておき、それを使って処理を行えば、 こういった心配もなくなりますね。 class化は考えていなかったので、良い方法だと思いました。

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> 別のファイルで定義された変数を使うのって何だか違和感があります・・・。 何に“違和感”を感じるかは個人差が有りますので 御自分の納得する方法で実現するしかありませんが、 コンフィグファイルをインクルードして利用する著名なソフトや汎用ライブラリーでも コンフィグファイルの中に配列で設定値などが定義されているものも多々見受けられるので 私は一般的な手法と考えています。 例 phpmyadmin など どうしても納得できない場合は、配列と類似の記述で利用できる形式で 関数を定義しておくのも手ですね。 例 <?php function weekday($n){return mb_substr("日月火水木金土",$n%7,1);} print weekday(2); ?>

neunter
質問者

お礼

回答ありがとうございます。 他の人のソースを見てみると言うのは考えたのですが、phpmyadminは全く候補にありませんでした。 早速見て参考にしたいと思います。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

どちらでも良いんじゃない? 規模が大きい場合は共通部分は別にしておいてライブラリ化のようにしてincludeなりで使うのはむしろ普通のやり方だと思う http://jp.php.net/manual/ja/function.require-once.php

neunter
質問者

お礼

回答ありがとうございます。 何が「普通」なのかも分からない状態だったので、「普通のやり方」だと言うことが分かって良かったです。