SplFileObject クラス
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
はじめに
SplFileObject クラスはファイルのためのオブジェクト指向のインターフェイスを提供します。
クラス概要
/* 定数 */
/* メソッド */
public __construct(
string
string
bool
?resource
)
string
$filename
,string
$mode
= "r",bool
$useIncludePath
= false
,?resource
$context
= null
)
public fgetcsv(string
$separator
= ",", string $enclosure
= "\"", string $escape
= "\\"): array|falsepublic fputcsv(
array
string
string
string
string
): int|false
array
$fields
,string
$separator
= ",",string
$enclosure
= "\"",string
$escape
= "\\",string
$eol
= "\n"): int|false
public setCsvControl(string
$separator
= ",", string $enclosure
= "\"", string $escape
= "\\"): void/* 継承したメソッド */
public SplFileInfo::openFile(string
}$mode
= "r", bool $useIncludePath
= false
, ?resource $context
= null
): SplFileObject定義済み定数
SplFileObject::DROP_NEW_LINE
-
行末の改行を読み飛ばします。
SplFileObject::READ_AHEAD
-
先読み/巻き戻しで読み出します。
SplFileObject::SKIP_EMPTY
-
ファイルの空行を読み飛ばします。期待通りに動作させるには、
READ_AHEAD
フラグを有効にしないといけません。 SplFileObject::READ_CSV
-
CSV 列として行を読み込みます。
目次
- SplFileObject::__construct — 新しいファイルオブジェクトを作成する
- SplFileObject::current — ファイルの現在の行を取得する
- SplFileObject::eof — ファイルの終端に到達しているか調べる
- SplFileObject::fflush — 出力をファイルにフラッシュする
- SplFileObject::fgetc — ファイルから文字を取り出す
- SplFileObject::fgetcsv — ファイルから行を取り出し CSV フィールドとして処理する
- SplFileObject::fgets — ファイルから 1 行取り出す
- SplFileObject::fgetss — ファイルから 1 行取り出し HTML タグを取り除く
- SplFileObject::flock — 簡易なファイルロックを行う
- SplFileObject::fpassthru — ファイルポインタに残っているデータをすべて出力する
- SplFileObject::fputcsv — フィールドの配列を CSV の行として書き出す
- SplFileObject::fread — ファイルから読み取る
- SplFileObject::fscanf — フォーマットに従ってファイルからの入力をパースする
- SplFileObject::fseek — ファイルポインタを移動させる
- SplFileObject::fstat — ファイルの情報を得る
- SplFileObject::ftell — ファイルポインタの現在位置を返す
- SplFileObject::ftruncate — ファイルを指定した長さに丸める
- SplFileObject::fwrite — ファイルに書き込む
- SplFileObject::getChildren — 用途はなし
- SplFileObject::getCsvControl — CSV の区切り、囲み文字、エスケープ文字を取得する
- SplFileObject::getCurrentLine — SplFileObject::fgets のエイリアス
- SplFileObject::getFlags — SplFileObject のフラグを取得する
- SplFileObject::getMaxLineLen — 行の最大バイト数を取得する
- SplFileObject::hasChildren — SplFileObject は子を持ちません
- SplFileObject::key — 行番号を取得する
- SplFileObject::next — 次の行を読み出す
- SplFileObject::rewind — ファイルポインタを先頭に巻き戻す
- SplFileObject::seek — ファイルポインタを指定行に移動させる
- SplFileObject::setCsvControl — CSV の区切り文字、囲み文字、エスケープ文字をセットする
- SplFileObject::setFlags — SplFileObject のフラグをセットする
- SplFileObject::setMaxLineLen — 読み込む行の最大バイト数をセットする
- SplFileObject::__toString — 現在の行を文字列として取得する
- SplFileObject::valid — ファイル終端でないかチェックする
+add a note
User Contributed Notes 4 notes
Lars Gyrup Brink Nielsen ¶
11 years ago
Note that this class has a private (and thus, not documented) property that holds the file pointer. Combine this with the fact that there is no method to close the file handle, and you get into situations where you are not able to delete the file with unlink(), etc., because an SplFileObject still has a handle open.
To get around this issue, delete the SplFileObject like this:
---------------------------------------------------------------------
<?php
print "Declaring file object\n";
$file = new SplFileObject('example.txt');
print "Trying to delete file...\n";
unlink('example.txt');
print "Closing file object\n";
$file = null;
print "Deleting file...\n";
unlink('example.txt');
print 'File deleted!';
?>
---------------------------------------------------------------------
which will output:
---------------------------------------------------------------------
Declaring file object
Trying to delete file...
Warning: unlink(example.txt): Permission denied in file.php on line 6
Closing file object
Deleting file...
File deleted!
---------------------------------------------------------------------
marcus at synchromedia dot co dot uk ¶
10 years ago
If you want to skip blank lines when reading a CSV file, you need *all * the flags:
$file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);