こんにちはフロントエンドエンジニアのまさにょんです!
今回は、PHPでfileのCRUD処理をするファイル操作関数の使い方について解説していきます。
目次
PHPでfileのCRUD処理をするファイル操作関数の使い方
PHPでfileのCRUD処理をするSampleCode全文
まずは、PHPでfileのCRUD処理をするSampleCodeの全文を掲載しておきます。
各ファイル操作処理に関する詳細は、後述します。
ポイントとすると、file_put_contents()
がファイルの新規作成(Create)と追記などの更新(Update)を担っていることぐらいです。
他はfile_get_contents()
でファイルの読み込み処理(Read)をしてunlink()
でファイルの削除を実施しています。
<?php
$DataDir = dirname(__FILE__) . '/TestDir/';
// [ PHPでFileのCRUD処理をする => ファイルの Create, Read, Update, Delete 処理🔥 ]
try {
// [ 1. File の Create or Update-処理🔥 ]
// file_put_contents() で、ファイルを新規作成 or 存在すれば、設定したデータを書き込む
$target_file = 'Robotama.txt';
$target_file_path = "{$DataDir}{$target_file}";
// 1-1. ファイル新規作成 or ファイル内容上書きパターン
$file_create_result = file_put_contents($target_file_path, 'Robotama-Nanoda');
// ファイルを作成失敗したら、Error-throw
if (!$file_create_result) throw new Exception("Error when creating file. Failed to create file {$target_file_path}.");
// [ 2. File の Read-処理🔥 ]
// 2-1. ファイルを読み込む
$file_data = file_get_contents($target_file_path);
// ファイルの読み込みに失敗したら、Error-throw
if (!$file_create_result) throw new Exception("Error when Reading file. Failed to read file {$target_file_path}.");
// 2-2. 読み込んだデータを出力する
echo '新規作成後のファイルのコンテンツ' . "\n";
echo $file_data . "\n";
// [ 出力結果 ]
// 新規作成後のファイルのコンテンツ
// Robotama-Nanoda
// [ 3. File の Create or Update-処理🔥 ]
$msg = 'ぷるぷるロボ玉なのだ!';
// 3-1. ファイル新規作成 or すでにファイルが存在する場合は、データを追記するパターン
$msg_add_result = file_put_contents($target_file_path, "\n{$msg}", FILE_APPEND);
// ファイルに追記が失敗したら、Error-throw
if (!$file_create_result) throw new Exception("Error when updating file. Failed to update file {$target_file_path}.");
// 3-2. 追記内容の確認
$file_data2 = file_get_contents($target_file_path);
echo '追記後ののファイルのコンテンツ' . "\n";
echo($file_data2) . "\n";
// [ 出力結果 ]
// 追記後ののファイルのコンテンツ
// Robotama-Nanoda
// ぷるぷるロボ玉なのだ!
// [ 4. File の Delete-処理🔥 ]
// 4-1. ファイルを削除する
$delete_process_result = unlink($target_file_path);
// ファイルの削除に失敗したら、Error-throw
if (!$delete_process_result) throw new Exception("Error when deleting file. Failed to delete {$target_file_path}.");
// 異常系の処理インターファイス
} catch(Exception $e) {
header('Content-Type: application/json');
$response = [
'result' => false,
'error' => $e->getMessage()
];
echo json_encode($response);
return;
}
file_put_contents関数でファイルのCreate処理 or Update処理をする
file_put_contents関数を使用すると、指定したファイルが存在しなければ新規作成(Create)の処理をしてくれるし、
すでにファイルが存在する場合は、更新処理(Update)をしてくれます。
ちなみに、FILE_APPEND
を第3引数に設定することで、ファイルを更新(Update)する際に、
上書きではなく、追記の処理としてテキストの投入をしてくれます。
<?php
$DataDir = dirname(__FILE__) . '/TestDir/';
try {
// [ 1. File の Create or Update-処理🔥 ]
// file_put_contents() で、ファイルを新規作成 or 存在すれば、設定したデータを書き込む
$target_file = 'Robotama.txt';
$target_file_path = "{$DataDir}{$target_file}";
// 1-1. ファイル新規作成 or ファイル内容上書きパターン
$file_create_result = file_put_contents($target_file_path, 'Robotama-Nanoda');
// ファイルを作成失敗したら、Error-throw
if (!$file_create_result) throw new Exception("Error when creating file. Failed to create file {$target_file_path}.");
// ファイルを読み込む
$file_data = file_get_contents($target_file_path);
// 読み込んだデータを出力する
echo '新規作成後のファイルのコンテンツ' . "\n";
echo $file_data . "\n";
// [ 出力結果 ]
// 新規作成後のファイルのコンテンツ
// Robotama-Nanoda
// [ 3. File の Create or Update-処理🔥 ]
$msg = 'ぷるぷるロボ玉なのだ!';
// 3-1. ファイル新規作成 or すでにファイルが存在する場合は、データを追記するパターン
$msg_add_result = file_put_contents($target_file_path, "\n{$msg}", FILE_APPEND);
// ファイルに追記が失敗したら、Error-throw
if (!$file_create_result) throw new Exception("Error when updating file. Failed to update file {$target_file_path}.");
// 3-2. 追記内容の確認
$file_data2 = file_get_contents($target_file_path);
echo '追記後ののファイルのコンテンツ' . "\n";
echo($file_data2) . "\n";
// [ 出力結果 ]
// 追記後ののファイルのコンテンツ
// Robotama-Nanoda
// ぷるぷるロボ玉なのだ!
// 異常系の処理インターファイス
} catch(Exception $e) {
header('Content-Type: application/json');
$response = [
'result' => false,
'error' => $e->getMessage()
];
echo json_encode($response);
return;
}
file_get_contents関数でファイルのRead処理をする
PHPでファイルの中身のテキストを読み込み(Read)処理をする場合は、file_get_contents関数を使います。
<?php
$DataDir = dirname(__FILE__) . '/TestDir/';
try {
$target_file = 'Robotama.txt';
$target_file_path = "{$DataDir}{$target_file}";
$file_create_result = file_put_contents($target_file_path, 'Robotama-Nanoda');
// [ 2. File の Read-処理🔥 ]
// 2-1. ファイルを読み込む
$file_data = file_get_contents($target_file_path);
// ファイルの読み込みに失敗したら、Error-throw
if (!$file_create_result) throw new Exception("Error when Reading file. Failed to read file {$target_file_path}.");
// 2-2. 読み込んだデータを出力する
echo '新規作成後のファイルのコンテンツ' . "\n";
echo $file_data . "\n";
// [ 出力結果 ]
// 新規作成後のファイルのコンテンツ
// Robotama-Nanoda
// 異常系の処理インターファイス
} catch(Exception $e) {
header('Content-Type: application/json');
$response = [
'result' => false,
'error' => $e->getMessage()
];
echo json_encode($response);
return;
}
unlink関数でファイルのDelete処理をする
PHPでファイルの削除処理(Delete)をする場合は、unlink関数を使います。
<?php
$DataDir = dirname(__FILE__) . '/TestDir/';
try {
$target_file = 'Robotama.txt';
$target_file_path = "{$DataDir}{$target_file}";
// [ 4. File の Delete-処理🔥 ]
// 4-1. ファイルを削除する
$delete_process_result = unlink($target_file_path);
// ファイルの削除に失敗したら、Error-throw
if (!$delete_process_result) throw new Exception("Error when deleting file. Failed to delete {$target_file_path}.");
// 異常系の処理インターファイス
} catch(Exception $e) {
header('Content-Type: application/json');
$response = [
'result' => false,
'error' => $e->getMessage()
];
echo json_encode($response);
return;
}
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!