【PHP】ファイル書き込みを行うためのクラスの作成方法(file_put_contents)

PHP

PHPでfile_put_contentsを使ってファイル書き込みを行うためのクラスを作成する方法を紹介します。

作成するファイルを書き込みを行うクラス

<?php

 class FileWrite {

    // プロパティ
    private $filename;
    private $content = '';
    public const APPEND = FILE_APPEND;

    // コンストラクタ関数
    function __construct($filename) {
        $this->filename = $filename;
    }

    // 内容を追加するメソッド
    function append($content) {
        // 渡されるcontentをこのクラスのcontentに格納する
        // 渡ってきた内容を結合していくので.=
        // $this->content = $this->content . $content;
        $this->content .= $content;

        // チェーンメソッドが活用できるようにreturn で$thisを返す
        return $this;
    }
    // 改行するメソッド
    function newline() {
        // $this->content .= PHP_EOL;
        // return $this;
        return $this->append(PHP_EOL);
    }
    // ファイルを書き込む
    // 第三引数を渡す場合とそうでない場合があるのでデフォルト値をnull
    function commit($flag = null) {
        // ファイルを書き込む
        file_put_contents($this->filename, $this->content, $flag);
        // 内容を空にする
        $this->content = '';
        
        return $this;
    }


 }


//  インスタンス化
$file = new FileWrite('sample.txt');
// メソッドを実行
$file->append('こんにちは, 山田さん')
    ->newline()
    ->append('こんにちは, 佐藤さん')
    ->append('こんにちは, 近藤さん')
    ->newline()
    ->commit()
    ->append('追加の内容です。')
    ->commit(FileWrite::APPEND);

    // こんにちは, 山田さん
    // こんにちは, 佐藤さんこんにちは, 近藤さん
    // 追加の内容です。

file_put_contentsでファイルに書き込む

file_put_contentsの第一引数にファイル名、第二引数にそのファイルに書き込みたい内容を渡すことで、
その内容を書き込んだファイルを作成、上書きすることができます。

また、第三引数にフラグを渡すと、新規ではなく追加での書き込みを行うことが可能です。

PHP_EOLは改行

PHP_EOLは特殊な定数で、改行を意味します。
この定数が文字列の中に組み込まれると改行されることになります。

クラスを作成する

まずは、プロパティを設定します。
そして、コンストラクタ関数を作成します。
今回の場合は、file_put_contentsにわたす第一引数はクラスのプロパティに格納したいのでコンストラクタ関数を使います。

内容を追加するappend()メソッドを作成

そして、必要となるメソッドを作成します。
append()メソッドでは、渡されるcontentをこのクラスのcontentに格納します。
内容をどんどん結合していく必要があるので、クラスの$contentに追加できるように.=します。

改行するnewline()メソッドを作成

newline()メソッドではappend()とほとんど同じ内容のため、append()に改行を意味するPHP_EOLを渡します。

注意点として、チェーンメソッドを使いたい場合は、$this->append(PHP_EOL);を実行したあとは
$this;が残るため、これをreturnしてあげる必要があります。

ファイルを書き込むcommit()メソッドを作成

第三引数を渡す場合とそうでない場合があるのでデフォルト値をnullに設定します。

PHP

Posted by devsakaso