見出し画像

【 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://www.php.net/manual/ja/function.fopen.php

整理すると、

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関数で、$contentsfopen()で開かれた、contact.datを閉じます。


■ fclose関数

オープンされたファイルポインタをクローズする

fclose (  オープンされたファイル名   )

この処理で、ファイルを閉じておかないとエラーとなります。



▶︎ 結果

contact.datファイルの中身の、
末尾に、' 1行追記 ' というテキスト追記されました。

.contact.datファイルです。
1行追記


このように、ファイルを変数することができました。



【 まとめ 】

ファイルの操作について、ストリーム型の学習をしました。

奥は深いです。

もっと細かな処理が必要になることもあると思います。

しかし、まずは、「知る」ことがスタートです。

何かを作ることで、さらに奥深く学ぶことができます。

まずは、その準備をしましょう!!

この記事が気に入ったらサポートをしてみませんか?