Developer

【PHP基礎】ファイルシステム関数① fopen, fclose
2021.02.28
Lv1

【PHP基礎】ファイルシステム関数① fopen, fclose

ファイルシステム関数①

今回は、ファイルへの読み書きを行うことができるファイルシステム関数について紹介します。

■ファイルシステム関数とは

ファイルシステム上のフォルダ(ディレクトリ)やファイルを操作するための関数です。
ファイルやフォルダの情報を取得したり、ファイルへの読み書きを行うなど様々な機能を提供しています。
今の段階で理解する必要はありませんが、まずはファイル操作のイメージを掴むため、
write.txt
というファイルに「ファイルシステム関数を使ってみよう」と書き込むサンプルコードを見てみましょう。

サンプルコード

<?php
	// ファイルを開く(書き込みモード)
	$file = fopen("write.txt","w");
	// ファイルに書き込む
	fwrite($file,"ファイルシステム関数を使ってみよう\n");
	// ファイルを閉じる
	fclose($file);
?>

結果

write.txtという名前のファイルに以下のように書き込まれます

このサンプルコードのように、
ファイル操作での基本的な流れは以下のようになります。

  1. ファイルを開く
  2. ファイルを読み込む・書き込む
  3. ファイルを閉じる

今回はこの基本手順の①と③、
「ファイルを開く」「ファイルを閉じる」操作で必要な関数を紹介します。

■fopen関数


https://www.php.net/manual/ja/function.fopen.php

fopen関数は、ファイルを開きます。
戻り値であるファイルポインタリソースは読み書き処理の際に使用します。

構文

fopen( string filename, string mode [, int use_include_path ] )

引数

file ファイルのパス
mode オープンモード(下記表を参照)
use_include_path インクルードパスを含めるかどうか

オープンモード

モード 説明 ポインタ位置 中身リセット ファイルがない場合
r 読み込み 先頭 しない エラー
r+ 読み込み/書き出し 先頭 しない エラー
w 書き出し 先頭 する 作成
w+ 読み込み/書き出し 先頭 する 作成
a 書き出し 末尾 しない 作成
a+ 読み込み/書き出し 末尾 しない 作成
x 書き出し 先頭 ※新規作成のみ 作成
x+ 読み込み/書き出し 先頭 ※新規作成のみ 作成
c 書き出し 先頭 しない 作成
c+ 読み込み/書き出し 先頭 しない 作成

戻り値

データ型 resource
値の説明 成功した場合にファイルポインタリソース、失敗した場合に FALSE を返します

■fclose関数


https://www.php.net/manual/ja/function.floor.php

fclose関数は、ファイルを閉じます。

構文

fclose( handle )

引数

handle fopenまたはfsockopenで正常にオープンされたファイル

戻り値

データ型 bool
値の説明 成功した場合に TRUE を、失敗した場合に FALSE を返します。

まとめ

本を読む際にはまず本を開き、読み終えたら本を閉じるイメージと同じで、
fopen関数で操作したいファイルを開き、操作が終わったらfclose関数でファイルを閉じます。

fopen関数でファイルを開く際にオープンモードを設定する必要があります。
これから操作するファイルは読み込むだけなのか、書き込むだけなのか、
書き込む際はデータを消去し上書きするのか、データを残したまま追記するのか 等
ファイルに対してどのような操作をするかを決定しファイルを開きます。

fclose関数で操作の終わったファイルは閉じる必要がありますが、
処理が終了したタイミングで自動で閉じられるようになっているため
この関数を使ってファイルを閉じる操作は必須ではありません。
ただ、処理の終えたファイルが自動で閉じられるのを待って開いたままにしておくよりは
自らファイルを閉じる処理をしておくよう癖づけておくとよいでしょう。

今回のファイルシステム関数の紹介は以上です。
基本手順の②、「ファイルの読み取り・書き込み」するためのコマンドは
次回の記事で紹介します。

PHP基礎 連載目次リンク

PHP基礎 連載目次