• ベストアンサー

ファイルの読み込み方法について

サーバファイルなどを読み込む際、PHPではバッファを設けたfopen()、file_get_contents()という2つの方法のどちらかが採用されると思います。 しかし、ファイル内容などを全て取得したい場合、どちらも同じ動作をし、かつfile_get_contents()の方が簡潔な記述になります。 よく何かのサンプルだとfopen()を利用してバッファ指定で全ての内容を取得しているのですが、それに意図はあるのでしょうか? 明確な答えが知りたいです。

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

  • ベストアンサー
  • iyomante
  • ベストアンサー率60% (14/23)
回答No.1

抱含関係なので、fopenの方が古いバージョンから存在したから サンプルも多いのでは? C言語以来の変わらぬスタイルなので。

naktak
質問者

お礼

バッファオーバーフローを意識した昔ながらの文化、 という所ですか。 PHPとしてはfile_get_contents()を利用する事に 不利な事はないという事で宜しいのでしょうか? (PHP4.3以前の互換性は無視です)

その他の回答 (2)

回答No.3

file_get_contentsはPHP > 4.3.0と言う事で、2002年の12月以前には存在しませんでした。PHPが普及し始めたのはPHP4のリリース時期(2000年)あたりからで、ファイル操作については古いドキュメントではfopenしかありませんでした。ベテランで昔から使っていて使いこなしている人は、逆にfopenしか使った事が無いような場合もあるわけです。アップデート時に新しい関数を全てチェックしたりはあまりしないでしょうから、その人の中ではファイルと言ったらfopenと言う場合もあると思います。 検索上位に引っかかるようなドキュメントは、多くの人が参照し、比較的古くから存在しているので、file_get_contentsが出る前に存在している事も多いでしょう。かくいう私も一年程前まではfile_get_contentsなんて使っていませんし、認識もありませんでした。一旦覚えれば必ず使いますね。便利ですから。 今覚えた方法も、時間が経てば古いやり方になりますよね。 内部的にはfile_get_contentsでもCのfopenでオープンしているような気がしますので(ちゃんとソースは見ていません)、実質上同じと思っていいように思います。 # file_get_contents等ばっかり使って居るとfopenの仕方を忘れてしまう(笑。

naktak
質問者

お礼

そういえばソースは見ていませんでした。 ありがとうございます。特に何かを危惧することなくfile_get_contents()の方を利用します。

  • iyomante
  • ベストアンサー率60% (14/23)
回答No.2

あと、後々なにかに移植する場合くらいじゃないでしょうか。perlやjava等。 かなりレアな心配になりますが

naktak
質問者

お礼

ありがとうございます。 移植はまぁ、その言語でのセオリーを知っている人が 書けば問題ないと思いますので無視します! これから作ろうとしているものも、移植するほど長期間稼動するとは思っていませんので。

関連するQ&A