ファイルに入出力する – SplFileObject

PHPでファイルを入出力する場合、fgetsfile_get_contents等のファンクションを使うこともできますが、SplFileObjectオブジェクトを利用すると便利です。

ファイルを書き込む

まずは、ファイルに内容を書き込んでみましょう。

<?php
$file = new SplFileObject('log.txt', 'w');
$file->fwrite(date('Y-m-d H:i:s') . "\\n"));

このプログラムを実行すると、PHPファイルと同じ場所に log.txtというファイルができあがり、その中に現在の時刻が記録されます。何度も実行すると、その都度行が上に追加されます。

SplFileObjectのコンストラクターでファイルのパスと「オープンモード」を指定します。オープンモードは、そのファイルをどのように扱うかを示したアルファベットで、「w」は「write(書き込み)モード」です。その他のモードは、「fopenのmode」を参照してください。

例えば、ファイルの下に追記したい場合はオープンモードを「a」または、「a+」にしましょう。

指定したファイルが存在しない場合は、自動的に作成されます。ただし、権限によってはファイルが作れないことなどもあるため、その場合は権限設定を正しく行いましょう。

ファイルを読み込む

ファイルを読み込む場合は、「r」または「r+」でファイルを開きましょう。fgets()メソッドで1行取り出すことができます。

<?php
$file = new SplFileObject('log.txt', 'r');
echo $file->fgets();

ファイルの内容をすべて表示したい場合は、eof()メソッドでファイルの終わりまでたどり着いたかを確認しながら繰り返します。

<?php
$file = new SplFileObject('log.txt', 'r');
while (!$file->eof()) {
  echo $file->fgets();
}

なお、fgets()メソッドは省略することができます。

<?php
$file = new SplFileObject('log.txt', 'r');
echo $file(); // $file->fgets()と同じ意味

この他にも、さまざまなメソッドがあります。