電子書籍の厳選無料作品が豊富!

外部ファイル(複数のページからインクルードされる)に、
配列を定義するのって普通なのでしょうか。

例えば、曜日関係の処理をする場合、

$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つならどちらの方が分かりやすいですか?

A 回答 (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=>'土');
}
}

みたいなかんじ・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/06 14:34

>> 別のファイルで定義された変数を使うのって何だか違和感があります・・・。



何に“違和感”を感じるかは個人差が有りますので 御自分の納得する方法で実現するしかありませんが、

コンフィグファイルをインクルードして利用する著名なソフトや汎用ライブラリーでも
コンフィグファイルの中に配列で設定値などが定義されているものも多々見受けられるので
私は一般的な手法と考えています。
例 phpmyadmin など

どうしても納得できない場合は、配列と類似の記述で利用できる形式で
関数を定義しておくのも手ですね。

<?php
function weekday($n){return mb_substr("日月火水木金土",$n%7,1);}

print weekday(2);
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/06 13:17

どちらでも良いんじゃない?


規模が大きい場合は共通部分は別にしておいてライブラリ化のようにしてincludeなりで使うのはむしろ普通のやり方だと思う

http://jp.php.net/manual/ja/function.require-onc …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/06 13:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報