PHPでfileのCRUD処理をするファイル操作関数の使い方

PHP-file-CRUD

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、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!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

プログラミング学習・エンジニア転職関連の情報

自宅で現役エンジニアから学べる『TechAcademy』 (エンジニア転職保証)

『GEEK JOBキャンプ』スピード転職コース(無料)

【IT道場】入校時0円! 就職目的プログラミングスクール

エンジニア転職なら100%「自社開発」求人に強い【クラウドリンク】

『techgym』 (Python特化・無料)

PHP / Laravel書籍

最近の投稿