ファイル関連ライブラリは、ファイルの内容を操作するクラスのまとまりです。 通常のPHPで行うファイル関連処理をラップしたメソッドもありますが、 アレンジを加えて実業務において使いやすくしたり、インターフェイスの統一をしています。
ファイルの内容を読み込む例を示します。
(1) ファイルの読み込み
// ライブラリをインクルード SyL_Loader::lib('File'); // SyLフレームワークを使用しない場合は直接インクルード // include_once SYL_INCLUDE_DIR . '/lib/SyL_File.php'; $file = '/usr/local/apache2/data/test.txt'; $contents = ''; $f =& SyL_File::factory('r', $file); $f->open(); while ($tmp = $f->read()) { $contents .= $tmp; } $f->close(); echo $contents; // 上の手続きを一括して行う方法 $contents = ''; $f =& SyL_File::factory('r', $file); // processメソッドは、 // open read close メソッドを連続して実行します。 $contents = $f->process(); echo $contents; // さらに一行でデータを取得する方法 echo SyL_File::processAll('r', $file);
ファイル内容とスクリプトのエンコードが異なる場合は、それぞれ文字コードをopenメソッド前に指定します。これは、後述する書き込みでも同様です。
... $f =& SyL_File::factory('r', $file); $f->setScriptEncode('EUC-JP'); $f->setFileEncode('Shift_JIS'); $f->open(); ...
(2) CSVファイルの読み込み
// ライブラリをインクルード SyL_Loader::lib('File'); // SyLフレームワークを使用しない場合は直接インクルード // include_once SYL_INCLUDE_DIR . '/lib/SyL_File.php'; $contents = ''; $file = '/usr/local/apache2/data/test.csv'; $f =& SyL_File::factory('r', $file); $f->useCsv(','); // 区切り文字 $f->open(); while ($items = $f->read()) { $datetime = $items[0]; // 1項目目取得 echo $datetime . "\n"; } $f->close();
※CSVファイルの読み込みには、内部的にfgetcsv関数を使用しています。この関数は、ロケール設定を考慮しますので、必要であれば事前にロケールの変更をしてください。
※読み込むファイルのエンコードを指定する場合は、「(1) ファイルの読み込み」の後半に記載したようにエンコードを指定してください。
setlocale(LC_ALL, 'ja_JP.eucJP');
ファイルの内容を書き込む例を示します。新規で書き込む場合 SyL_File::factory メソッドの第1引数に w を指定しますが、 追加書き込みの場合、a を指定します。
(1) ファイルの書き込み
// ライブラリをインクルード SyL_Loader::lib('File'); // SyLフレームワークを使用しない場合は直接インクルード // include_once SYL_INCLUDE_DIR . '/lib/SyL_File.php'; $file = '/usr/local/apache2/data/test.txt'; $contents = '書き込み対象データ'; $f =& SyL_File::factory('w', $file); $f->open(); $f->write($contents); $f->close(); // 上の手続きを一括して行う方法 $f =& SyL_File::factory('w', $file); // processメソッドは、 // open write close メソッドを連続して実行します。 $f->process($contents); // さらに一行でデータを取得する方法 SyL_File::processAll('w', $file, $contents);
(2) CSVファイルの書き込み
// ライブラリをインクルード SyL_Loader::lib('File'); // SyLフレームワークを使用しない場合は直接インクルード // include_once SYL_INCLUDE_DIR . '/lib/SyL_File.php'; $contents = array(); $contents[] = array('aaa', 'bbb', 'ccc'); $contents[] = array('ddd', 'eee', 'fff'); $file = '/usr/local/apache2/data/test2.csv'; $f =& SyL_File::factory('w', $file); $f->useCsv(); $f->open(); foreach ($contents as $content) { // 分割された配列として書き込み $f->write($content); } $f->close();
※書き込むファイルのエンコードを指定する場合は、「(1) ファイルの読み込み」の後半に記載したようにエンコードを指定してください。