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

サーバファイルなどを読み込む際、PHPではバッファを設けたfopen()、file_get_contents()という2つの方法のどちらかが採用されると思います。
しかし、ファイル内容などを全て取得したい場合、どちらも同じ動作をし、かつfile_get_contents()の方が簡潔な記述になります。

よく何かのサンプルだとfopen()を利用してバッファ指定で全ての内容を取得しているのですが、それに意図はあるのでしょうか?
明確な答えが知りたいです。

A 回答 (3件)

抱含関係なので、fopenの方が古いバージョンから存在したから


サンプルも多いのでは?
C言語以来の変わらぬスタイルなので。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/03 23:10

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の仕方を忘れてしまう(笑。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/05 22:53

あと、後々なにかに移植する場合くらいじゃないでしょうか。

perlやjava等。
かなりレアな心配になりますが
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/05 22:50

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