![見出し画像](https://assets.st-note.com/production/uploads/images/83476738/rectangle_large_type_2_6431cff38ad57735d0e7dffaa92357dc.jpeg?width=1200)
【 PHP学習 #24 】 ファイル操作②「 ストリーム型 」 FIREへの旅路 ♯479
前回は、ファイル操作のファイル名型の操作方法を学びました。
今回も引き続きファイル操作について学びます。
▶︎ ファイル操作の方法
・ファイル名型(ファイル丸ごと)
file_get_contents, file_put_contents
・ストリーム型(1行ごと)
fopen, fclose, fgets, fwrite
・オブジェクト型(オブジェクトとして)
SpiFileObject
【 ストリーム型 】
ストリーム型の書き方を解説します。
前回同様のファイルを使用します。
▶︎ 書き方
test.php
<?php
//解説 ①
$contactFile = '.contact.dat';
//解説 ②
$contents = fopen($contactFile, 'a+');
//解説 ③
$addText = '1行追記' . "\n" ;
//解説 ④
fwrite($contents, $addText);
/解説 ⑤
fclose($contents);
.contact.dat (テキストファイル)
.contact.datファイルです。
上記コード事項で ↓
.contact.datファイルです。
1行追記
< 解説 ①>
//解説 ①
$contactFile = '.contact.dat';
$contactFile 変数を作り、.contact.datファイルを代入しています。
< 解説 ② >
//解説 ②
$contents = fopen($contactFile, 'a+');
$contents 変数を作り
fopen関数を使って、$contactFile を 'a+' という編集ができるようにしています。
■ fopen関数
ファイルまたは URL をオープンする
fopen( ファイル名 , ' mode ' )
第一引数のファイル名は、編集するファイル名を書きます。
第二引数では、modeを指定するとあります。
このmodeはこちらの一覧です。
![](https://assets.st-note.com/img/1657680673665-kzGnsuG5Oj.png?width=1200)
整理すると、
r 読込でオープン ファイルポインタ先頭
r+ 読込/書込オープン ファイルポインタ先頭
w 書込オープン ファイルポインタ先頭
w+ 読込/書込オープン ファイルポインタ先頭
a 追加書込オープン ファイルポインタ末尾
a+ 読込/書込オープン ファイルポインタ末尾
x 読込オープン ファイルポインタ先頭
x+ 読込/書込オープン ファイルポインタ先頭
c 書込オープン ファイルポインタ先頭
c+ 読込/書込オープン ファイルポインタ先頭
今回は、'a+' なので、
読込/書込オープン ファイルポインタ末尾のモードで、ファイルが開かれます。
< 解説 ③ >
//解説 ③
$addText = '1行追記' . "\n" ;
$addText 変数に、'1行追記' という文字列を代入します。
"\n" は、改行させるためのものです。
< 解説 ④ >
//解説 ④
fwrite($contents, $addText);
fwrite関数で、$contents = 'a+' で開いた.contact.datファイルに、
$addText の内容( '1行追記' )を 書き込み(write)ます。
■ fwrite関数
バイナリセーフなファイル書き込み処理
fwrite ( fopen() を使用して作成したファイル , 書き込む文字列 )
fwriteで指定する、ファイルが、fopenで開かれている必要があるので、
fopenとセットで使用することになります。
< 解説 ⑤ >
/解説 ⑤
fclose($contents);
fclose関数で、$contents = fopen()で開かれた、contact.datを閉じます。
■ fclose関数
オープンされたファイルポインタをクローズする
fclose ( オープンされたファイル名 )
この処理で、ファイルを閉じておかないとエラーとなります。
▶︎ 結果
contact.datファイルの中身の、
末尾に、' 1行追記 ' というテキスト追記されました。
.contact.datファイルです。
1行追記
このように、ファイルを変数することができました。
【 まとめ 】
ファイルの操作について、ストリーム型の学習をしました。
奥は深いです。
もっと細かな処理が必要になることもあると思います。
しかし、まずは、「知る」ことがスタートです。
何かを作ることで、さらに奥深く学ぶことができます。
まずは、その準備をしましょう!!